如何按相关性对 MYSQL 全文搜索结果进行排名
问题:
我该如何按相关性对 MYSQL 全文搜索结果进行排序,确定完全匹配的优先级并按字母顺序对部分匹配进行排序?
答案:
要在 MYSQL 中执行全文搜索,请使用 MATCH(. ..) AGAINST(...) 构造而不是 LIKE 运算符。 MATCH(...) AGAINST(...) 返回每个结果的相关性分数,可用于按相关性对结果进行排序。
这是一个修改后的查询,它使用全文搜索并对结果进行排序相关性:
SELECT * FROM `vocabulary` WHERE MATCH(`translation`) AGAINST ('word') ORDER BY MATCH(`translation`) AGAINST ('word') DESC;
此查询将首先返回完全匹配的结果,然后按相关性降序排列部分匹配。
示例:
考虑以下词汇表:
id | translation |
---|---|
1 | word |
2 | crossword |
3 | words |
4 | wordsmith |
使用搜索词“word”运行上述查询将返回以下按相关性排序的结果:
id | translation |
---|---|
1 | word |
2 | crossword |
3 | words |
4 | wordsmith |
以上是如何按相关性对 MySQL 全文搜索结果进行排序?的详细内容。更多信息请关注PHP中文网其他相关文章!