首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >全文搜索-关键字到关键字(输入field>database列)

问全文搜索-关键字到关键字(输入field>database列)
EN

Stack Overflow用户
提问于 2012-06-29 20:42:35
回答 1查看 435关注 0票数 1

有没有人能帮我找到我想要的代码?

我有一个输入字段,在那里多个关键字将被写入。

示例:

代码语言:javascript
复制
opel corsa car

我的数据库中有用逗号分隔的标记条目:

代码语言:javascript
复制
1. opel, corsa
2. car, opel
3. juice
4. car

我想要做的是,实现全文搜索,但基于关键字到关键字搜索,这意味着我想列出包含任何关键字的所有结果。然而,我想要修剪这些搜索词2个字母,以防有人搜索corsoa,或corsae而不是corsa。

到目前为止,我得到的是:

代码语言:javascript
复制
$input = $_GET["tag"];
$input = mb_strtolower($input,'UTF-8');
$tag = explode(" ", $input);
$tagCheck = '(tags LIKE "%'.implode('%") OR (tags LIKE "%', $tag).'%")';

和在查询中

代码语言:javascript
复制
$dbq = $dbco->prepare("SELECT name FROM table WHERE ".$tagCheck." HAVING MAX(price) < 50000");
EN

回答 1

Stack Overflow用户

发布于 2012-06-29 21:37:01

我建议你改变你的数据库设计(如果你可以的话)。

尝试创建一个数据库关系,以提高性能,同时使查询“更简单”。

在您的查询中,尝试使用MySQL的函数find_in_set。

代码语言:javascript
复制
SELECT ... WHERE FIND_IN_SET('1', field)

示例:

代码语言:javascript
复制
mysql> select * from fruits;
+-------------------------------+
| fruit                         |
+-------------------------------+
| banana, apple, orange, grapes |
+-------------------------------+
1 row in set (0.00 sec)

mysql> select * from fruits where find_in_set(' apple',fruit);
+-------------------------------+
| fruit                         |
+-------------------------------+
| banana, apple, orange, grapes |
+-------------------------------+
1 row in set (0.00 sec)

编辑:

如果您的表是MyISAM或Innodb (使用MySQL V. 5.6.+),则可以创建文本索引并使用like进行查询

在您的select中,使用以下命令

代码语言:javascript
复制
 SELECT ... WHERE tads like ('%text%')

使用%(通配符)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11261990

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档