MySQL-具有部分单词匹配和相关性得分(FULLTEXT)的高效搜索

BadHorie

我该如何进行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

BadHorie

一年后,我在这个(有点)重复的问题中获得了很好的解决方案:

MySQL-如何获得准确相关的搜索结果

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

MySQL查询标签搜索的相关性

MySQL全文搜索布尔模式按相关性而不是我要的顺序排序(短语匹配)

MySQL全文搜索-搜索具有完全匹配和通配符的单词,但首先获得完全匹配的其他匹配项

MySQL全文搜索按布尔模式顺序的相关性

mysql select ... in,计算几个匹配的相关性

MySQL按相关性排序,同时具有多个like

匹配所有单词的MySQL全文搜索查询仍返回部分匹配

使用MySQL相关性的搜索引擎开发,不适用于PHP

如何将MySQL搜索结果与相关性排序?

MySQL在句子中的任何位置按相关性获取全字匹配(不是字符)

根据mysql中的相关性对结果进行排名

SOLR搜索按相关性得分筛选

相同匹配项的不同Cloudsearch相关性得分

MongoDB全文搜索和多个单词按相关性排序

MySQL:具有多个匹配项的JOIN和WHERE

laravel 7.14搜索具有相关性的数据表后,为产品建立链接

MySQL无法使FULLTEXT搜索正常工作

使用FULLTEXT索引增强MySQL搜索

MySQL `EXPLAIN` 说 DEPENDENT QUERY 即使不存在相关性

MySQL-通过相关性查询订单,无需全文本方法

具有匹配标题的两个数据框列之间的相关性

Django MySQL与iRegex搜索进行精确单词匹配

具有多个类别ID的MySQL搜索

具有随机性的 MySQL 分页

Sitecore内容按字段和相关性搜索

Classic和UUI中的相关性搜索

按组创建具有相关性和p值的数据框?

MySQL 的 FULLTEXT 搜索是否为 MyISAM 和 InnoDb 返回相同的结果?

ElasticSearch:给定文档和查询,相关性得分是多少?