当前位置: 首页 > news >正文

【Lucene】SimScorer

SimScorer 就是 Lucene 中真正给“某个 term 在一篇文档里的打分”算分的最小执行单元,被 `TermScorer` 等 scorer 调用,完成 TF-IDF、BM25 等算法的实际数值计算。

---

1. 它在哪?  

- 定义在 `org.apache.lucene.search.similarities.Similarity.SimScorer`(内部静态抽象类)。  

- 每个 `Similarity` 实现(如 `BM25Similarity`)都会创建自己的 `SimScorer` 子类(如 `BM25Scorer`)。

2. 它做什么?  

对外只有两个核心动作:  

1. score(float freq, long norm)

   根据“词频 freq”和“字段长度编码 norm”立即返回该 term 在该文档的分数。  

2. explain(...)

   生成人类可读的 `Explanation`,告诉你为啥得这个分。

3. 什么时候被用到?  

查询阶段:  

- `IndexSearcher` → `TermQuery$TermWeight.scorer()` → `TermScorer` → `TermScorer.score()` 内部调用 `simScorer.score(freq, norm)`。

也就是说,每匹配一篇文档,都会跑一次 `SimScorer.score(...)`。

4. 用 BM25 举例  

```java

// 在 BM25Similarity 内部

public final SimScorer simScorer(...) {

    ...

    return new BM25Scorer(boost, k1, b, idf, avgdl, cache);

}

```

`BM25Scorer.score(freq, norm)` 就是标准 BM25 公式:  

```java

return weight * (freq / (freq + K(norm)));

```

其中 `K(norm)` 已经预先缓存到 `cache[]` 中,保证每次打分只做一次乘除。

---

✅ 一句话记住  

> SimScorer = Lucene 相似度算法的“微积分”:给定词频和文档长度,立刻吐出该 term 的得分。

http://www.lryc.cn/news/594844.html

相关文章:

  • 【Spring AI】Advisors API—顾问(即拦截器)
  • 轨迹优化 | 基于边界中间值问题(BIVP)的路径平滑求解器(附C++/Python仿真)
  • 6.String、StringBuffer、StringBuilder区别及使用场景
  • C++学习笔记(六:数组)
  • AI Agent与MCP Service技术进展结构化分析报告(2025Q2)
  • 解决win10下Vmware虚拟机在笔记本睡眠唤醒后ssh连接不上的问题
  • 项目研发进度安排
  • 音视频学习(四十二):H264帧间压缩技术
  • 【时时三省】(C语言基础)使用字符指针变量和字符数组的比较
  • Electron使用WebAssembly实现CRC-16 原理校验
  • Java 二叉树
  • C++11之右值引用与移动语义(提高效率)重要
  • 【Linux指南】Linux系统 -权限全面解析
  • Jetpack ViewModel LiveData:现代Android架构组件的核心力量
  • 病历数智化3分钟:AI重构医院数据价值链
  • AI+Python | 长时序植被遥感:动态·物候·变异归因·RSEI生态评估全流程[特殊字符]
  • C语言(20250718)
  • 车载电子电器架构 --- MCU信息安全相关措施
  • 基于springboot+vue+mysql的在线教育系统(源码+论文)
  • 深入详解随机森林在医学图像质量评估中的应用与实现细节
  • 网络编程Socket linux
  • 【Prometheus+Grafana篇】监控通过Keepalived实现的MySQL HA高可用架构
  • DeepSeek vs ChatGPT:谁更胜一筹?
  • Python 模块未找到?这样解决“ModuleNotFoundError”
  • 02-UE5蓝图初始的三个节点作用
  • RuoYi配置多数据源失效
  • Laravel 系统版本查看及artisan管理员密码找回方法针对各个版本通用方法及原理-优雅草卓伊凡
  • 2025最新版虚幻引擎5(UE5)入门教程:前言——你的随身教程和学习笔记
  • 如何简洁高效的实现存在则更新,不存在则插入
  • HTML前端颜色渐变动画完整指南