# 相关性打分原理

URL: https://caijiao.org/elasticsearch/03.advanced/05.scoring-basics
Source: docs/elasticsearch/03.advanced/05.scoring-basics.md
Description: 本章介绍 Elasticsearch 相关性打分的基本原理和计算方法，帮助理解搜索结果排序机制与提升搜索质量。

Elasticsearch 采用基于 Lucene 的评分算法来衡量文档与查询的相关性，影响搜索结果的排序。理解相关性打分有助于优化查询效果。

## 1. 基本概念

相关性评分（_score）表示文档匹配查询的程度，分值越高表示越相关。

## 2. TF-IDF 与 BM25

- **TF（Term Frequency）**：词项在文档中出现的频率，频率越高，相关性越强  
- **IDF（Inverse Document Frequency）**：词项在所有文档中的逆文档频率，出现越少，权重越高  
- **BM25**：Elasticsearch 默认使用的改进版 TF-IDF 算法，结合词频、文档长度和其他参数，效果更佳

## 3. 计算公式简述（BM25）

$$
\text{score}(q,d) = \sum_{t \in q} IDF(t) \cdot \frac{tf(t,d) \cdot (k_1 + 1)}{tf(t,d) + k_1 \cdot (1 - b + b \cdot \frac{|d|}{avgdl})}
$$

- \( tf(t,d) \)：词项 \( t \) 在文档 \( d \) 中的频率  
- \( |d| \)：文档长度  
- \( avgdl \)：平均文档长度  
- \( k_1, b \)：调节参数，默认分别为 1.2 和 0.75  
- \( IDF(t) \)：词项逆文档频率

## 4. 其他影响因素

- 字段权重（boost）  
- 查询类型和结构  
- 过滤条件（不影响评分）

## 5. 调优建议

- 根据业务需求调整字段权重  
- 使用功能查询（function_score）自定义打分  
- 分析查询日志，优化索引和查询策略

---

理解相关性打分机制，能帮助你精准调整搜索效果，提升用户体验和业务价值。
