2016-04-04 93 views
0

我想改进我的全文查询的结果。使用FULLTEXT索引增强MySQL搜索

SELECT *, MATCH (winery) AGAINST ('chateau cheval blanc') AS score 
FROM usr_wines 
WHERE MATCH (winery) AGAINST ('chateau cheval blanc') 
ORDER BY score DESC 
... 

的问题是所示的结果是这样的:

  • 酒庄白马叫小白马
  • 酒庄白马

我认为MySQL的返回“酒庄白马叫小白马“在另一个之前,因为它在字符串中发现了2次”cheval“。 但对于我来说,第二个结果应该在第一个结果之前显示,因为它与所查询的内容更匹配。

我试过其他的东西,比如“WITH QUERY EXPANSION”和“IN BOOLEAN MODE”没有成功。我也读过,我们可以在搜索中添加符号(+)来改变行为。

那么,欢迎任何帮助,以获得适当的行为。

回答

1

http://dev.mysql.com/doc/refman/5.6/en/fulltext-boolean.html

你只需要在布尔模式下使用与,表明你想要精确短语 例:

SELECT *, MATCH (winery) AGAINST ('"chateau cheval blanc"' IN BOOLEAN MODE) AS score 
FROM usr_wines 
WHERE MATCH (winery) AGAINST ('"chateau cheval blanc"' IN BOOLEAN MODE) 
ORDER BY score DESC 
+0

仅仅完美谢谢! –