我该如何进行MySQL搜索,该搜索将匹配部分单词但还提供准确的相关性排序?
SELECT name, MATCH(name) AGAINST ('math*' IN BOOLEAN MODE) AS relevance
FROM subjects
WHERE MATCH(name) AGAINST ('math*' IN BOOLEAN MODE)
布尔模式的问题是相关性总是返回1,因此结果的排序不是很好。例如,如果我将搜索结果限制为5,则返回的结果有时似乎并不是最相关的。
如果我以自然语言模式搜索,我的理解是相关性分数很有用,但我无法匹配部分单词。
有没有一种方法可以执行满足所有这些条件的查询:
到目前为止,我最好的是:
SELECT name
FROM subjects
WHERE name LIKE 'mat%'
UNION ALL
SELECT name
FROM subjects
WHERE name LIKE '%mat%' AND name NOT LIKE 'mat%'
但我宁愿不使用LIKE
。
一年后,我在这个(有点)重复的问题中获得了很好的解决方案:
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句