使用sql进行关键字搜索

时间:2012-07-17 14:45:34

标签: mysql sql

在构建应用程序时,我遇到了一个我无法解决的难题。 我有一个包含多个关键字的表格,例如:

结构:

id  keyword
1   iphone 4
2   iphone 4 16gb black
3   iphone 3gs
4   iphone 5 32gb white
5   macbook pro 13" late 2009
6   macbook air 15"
...

现在我正在尝试使用关键字从该数据库中获取结果。 例如我在搜索iphone 4 black。我试着这样做 方式:像%iphone%4%black这样的关键字,但我有排序的问题 like中关键字的问题。所以我尝试了mysql的fulltext-serach。但这个搜索也让我回归,例如搜索iphone 3gsiphone 4

有没有办法解决这个问题?

4 个答案:

答案 0 :(得分:1)

试试这个:

where keyword like '%iphone%'
and keyword like '%4%'
and keyword like '%black%'

答案 1 :(得分:1)

一起使用多个LIKE条件:

WHERE keyword LIKE '%iphone%' AND keyword LIKE '%4%' AND keyword LIKE '%black%'

然后最终你可以开始将“点数”归因于不同的匹配,以便通过你的ORDER BY中的一些花哨的IF来命令你的结果

答案 2 :(得分:0)

你可以试试这个:

WHERE keyword LIKE %iphone% AND keyword LIKE %black%

答案 3 :(得分:0)

您是如何使用全文选项的?它需要查询中的文字吗?

但是,既然你尝试过,请考虑使用布尔选项(http://dev.mysql.com/doc/refman/5.1/en/fulltext-boolean.html)。

这允许您指定搜索中必须包含或排除的单词。在您的情况下,您想要包含所有内容,因此您需要一个类似“+ iphone +4”的搜索字符串。您需要将其直接放入查询中。

where match(keyword) against ('+iphone +4' in boolean mode)