在构建应用程序时,我遇到了一个我无法解决的难题。 我有一个包含多个关键字的表格,例如:
结构:
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 3gs
时iphone 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)