如何进行匹配部分单词的
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.