Apache Lucene 9.9,有史以来最快的 Lucene 版本
作者:Adrien Grand
Apache Lucene 的开发一直充满活力,但在过去的几个月中,查询评估的优化数量特别多。 没有一项优化是可以单独挑选出来的,而是围绕机械同情心(对底层硬件和系统特性的理解是通过多方面的改进来实现的,而不是依赖于单一的优化方法)和改进算法的许多改进的组合。
这里特别有趣的是,这些优化不仅有利于一些非常具体的情况,它们还转化为 Lucene 夜间基准测试的实际加速,旨在跟踪代表现实世界的查询的性能。 只需将鼠标悬停在注释上即可查看加速(或有时减速!)来自何处。 顺便说一句,特别感谢 Mike McCandless 近 13 年来一直在自己的时间和硬件上维护 Lucene 的夜间基准!
以下是夜间基准测试在 Lucene 9.6(2023 年 5 月)和 Lucene 9.9(2023 年 12 月)之间观察到的一些加速:
- AndHighHigh: 35% faster
- AndHighMed: 15% faster
- OrHighHigh: 60% faster
- OrHighMed: 38% faster
- CountAndHighHigh: 15% faster
- CountAndHighMed: 11% faster
- CountOrHighHigh: 145% faster
- CountOrHighMed: 155% faster
- TermDTSort: 24% faster
- TermTitleSort: 290% faster (not a typo!)
- TermMonthSort: 7% faster
- DayOfYearSort: 25% faster
- VectorSearch: 5% faster
如果你对这些更改感到好奇,以下是描述我们应用的一些优化的资源:
- 使用许多和/或高频术语(注释 FK)为 top-k 查询带来加速
- 使用 block-max MAXSCORE 进行更多跳跃(注释 FU)
- 使用 SIMD 指令加速向量搜索
- FMA 式向量相似度计算
Lucene 9.9 刚刚发布,预计将集成到很快发布的 Elasticsearch 8.12 中。 敬请关注!
原文:Apache Lucene 9.9, the fastest Lucene release ever — Elastic Search Labs