首页  >  文章  >  数据库  >  如何确定 MySQL 全文搜索中不同字段的相关性优先级?

如何确定 MySQL 全文搜索中不同字段的相关性优先级?

Susan Sarandon
Susan Sarandon原创
2024-11-04 01:44:30515浏览

How Can I Prioritize Relevance in MySQL Fulltext Search for Different Fields?

在 MySQL 全文搜索中实现相关性优先

跨多个字段进行全文搜索时,MySQL 为每个字段中找到的匹配项分配相同的相关性。但是,在某些情况下,可能需要对某些字段进行优先级排序,以确保它们对整体相关性分数的贡献更大。

解决方案:创建加权索引

要实现这一点,创建多个全文索引:

  • 一个在优先级较高的字段(例如关键字)
  • 一个在优先级较低的字段(例如内容)
  • 两个字段组合(例如关键字、内容)

具有加权相关性的示例查询

使用 MATCH(关键字)反对 (... ) 和 MATCH (content) AGAINST (...) 函数,您可以计算每个字段的单独相关性分数。 CASE 语句分配二进制值来指示特定字段是否包含搜索词:

SELECT *, 
CASE WHEN Keywords LIKE '%watermelon%' THEN 1 ELSE 0 END AS keywordmatch, 
CASE WHEN Content LIKE '%watermelon%' THEN 1 ELSE 0 END AS contentmatch,

以上是如何确定 MySQL 全文搜索中不同字段的相关性优先级?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn