我想改进全文查询的结果。
SELECT *, MATCH (winery) AGAINST ('chateau cheval blanc') AS score
FROM usr_wines
WHERE MATCH (winery) AGAINST ('chateau cheval blanc')
ORDER BY score DESC
...
问题是显示的结果是这样的:
我认为MySQL会回归" chateau cheval blanc petit cheval"在另一个之前,因为它发现了2次" cheval"在字符串中。 但对我来说,第二个结果应该在第一个结果之前显示,因为它更符合所查询的内容。
我尝试了其他的东西,例如" WITH QUERY EXPANSION"和"在布尔模式"没有成功。我还读到我们可以在搜索中添加符号(+)来改变行为。
嗯,欢迎任何帮助以获得适当的行为。
答案 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