MySQL 按“最佳匹配”排序
在 MySQL 中执行实时搜索时,基于字母顺序的默认结果排序可能无法提供最相关的结果。要对搜索字符串靠近单词开头的结果进行优先排序,请考虑实施“最佳匹配”排序。
按起始位置排序
放置结果如果搜索字符串首先出现在单词的开头,您可以利用多层排序方法。
SELECT word FROM words WHERE word LIKE '%searchstring%' ORDER BY CASE WHEN word LIKE 'searchstring%' THEN 1 WHEN word LIKE '%searchstring' THEN 3 ELSE 2 END
在此查询:
按位置排序Word
或者,要根据搜索字符串在单词中的位置对结果进行排序,可以使用 LOCATE() 函数。
SELECT word FROM words WHERE word LIKE '%searchstring%' ORDER BY LOCATE('searchstring', word)
使用这种方法:
处理决胜局
如果多个单词共享相同的搜索字符串位置,您可能需要引入二次排序标准。
SELECT word FROM words WHERE word LIKE '%searchstring%' ORDER BY <whatever>, word
通过添加另一个排序标准(例如按字母顺序排序),您可以打破任何联系并确保一致的排序。
以上是如何在MySQL实时搜索中实现'最佳匹配”排序?的详细内容。更多信息请关注PHP中文网其他相关文章!