gpt4 book ai didi

MySQL - 通过部分单词匹配和相关性评分进行高效搜索(全文)

转载 作者:行者123 更新时间:2023-11-29 15:26:29 26 4
gpt4 key购买 nike

如何进行 MySQL 搜索,既匹配部分单词,又提供准确的相关性排序?

SELECT name, MATCH(name) AGAINST ('math*' IN BOOLEAN MODE) AS relevance
FROM subjects
WHERE MATCH(name) AGAINST ('math*' IN BOOLEAN MODE)

bool 模式的问题是相关性总是返回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

最佳答案

MySQL 5.6 中新的 InnoDB 全文搜索功能可以在这种情况下提供帮助。我使用以下查询:

SELECT MATCH(column) AGAINST('(word1* word2*) ("word1 word1")' IN BOOLEAN MODE) score, id, column 
FROM table
having score>0
ORDER BY score
DESC limit 10;

其中 ( ) 将单词分组到子表达式中。第一组有like word%含义;第二个寻找确切的短语。分数以浮点形式返回。

关于MySQL - 通过部分单词匹配和相关性评分进行高效搜索(全文),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59041285/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com