使用FULLTEXT索引增强MySQL搜索

时间:2016-04-04 13:17:03

标签: mysql full-text-search

我想改进全文查询的结果。

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

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

  • chateau cheval blanc petit cheval
  • chateau cheval blanc

我认为MySQL会回归" chateau cheval blanc petit cheval"在另一个之前,因为它发现了2次" cheval"在字符串中。 但对我来说,第二个结果应该在第一个结果之前显示,因为它更符合所查询的内容。

我尝试了其他的东西,例如" WITH QUERY EXPANSION"和"在布尔模式"没有成功。我还读到我们可以在搜索中添加符号(+)来改变行为。

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

1 个答案:

答案 0 :(得分:1)

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

你必须使用IN BOOLEAN MODE和来表示你想要精确的短语。 示例:

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