相关性

本章节介绍如何理解和调优 Easysearch 的相关性评分,让搜索结果更符合业务预期。

什么是相关性 #

在全文搜索的语境中,相关性(Relevance)是指搜索结果与用户查询意图的匹配程度。Easysearch 为每个命中的文档计算一个 _score(相关性得分),并默认按得分从高到低排列结果。

相关性不是一个绝对值——它高度依赖业务场景。对于电商搜索,“相关"可能意味着标题和类目精确匹配;对于日志分析,“相关"可能只是时间范围内包含关键词。

核心影响因素 #

Easysearch 默认使用 BM25 相似度算法,以下因素直接影响文档得分:

因素说明
词频(TF)查询词在文档字段中出现的次数越多,得分越高(BM25 有饱和机制,避免高频词主导)
逆文档频率(IDF)在索引中出现越少的词,区分度越高,贡献的得分越多
字段长度短字段中的匹配比长字段中的匹配权重更高(如:标题匹配优于正文匹配)
查询结构must vs should、嵌套层级、boost 权重都会影响最终得分
协调性多个查询子句命中的文档通常得分更高

本章内容 #

主题说明
评分基础BM25 算法原理、TF/IDF/字段长度如何影响得分、支持的相似度算法一览
加权与调参Boost 权重、function_score 查询、decay 函数、脚本评分等实战技术
调试与 Explainexplain API 查看得分构成、Profile 分析执行耗时、慢查询日志配置
相关性常用策略电商搜索、日志搜索、站内搜索等场景的相关性调优方案

推荐阅读顺序 #

  1. 评分基础:理解 BM25 默认评分机制和各影响因素
  2. 加权与调参:掌握 boostfunction_score 等调优手段
  3. 调试与 Explain:学会用 Explain/Profile/Slowlog 定位问题
  4. 相关性常用策略:按业务场景选择合适的调优方案