1

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

结构体:

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. 我尝试以这种方式做到这一点:keyword like %iphone%4%black,但是我遇到的问题是关键字的排序like很重要。于是我尝试了mysql的fulltext-serach。但是这个搜索也会返回我,例如iphone 3gs,在搜索时iphone 4

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

4

4 回答 4

1

尝试这个:

where keyword like '%iphone%'
and keyword like '%4%'
and keyword like '%black%'
于 2012-07-17T14:52:00.767 回答
1

一起使用多个 LIKE 条件:

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

然后最终您实际上可以开始将“点”归因于不同的匹配项,以通过在您的 ORDER BY 中使用一些花哨的 IF 来排序您的结果

于 2012-07-17T14:52:53.593 回答
0

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

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

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

where match(keyword) against ('+iphone +4' in boolean mode)
于 2012-07-17T15:04:22.143 回答
0

你可以试试这个:

WHERE keyword LIKE %iphone% AND keyword LIKE %black%
于 2012-07-17T14:50:30.560 回答