Apache Lucene9.7今天发布:支持Java21并提高了性能


Apache Lucene9.7今天发布了。通过使用SIMD支持Java20和Java21,大大提高了性能,并允许并行执行kNN查询。

Apache Lucene 是一个完全用 Java 编写的高性能、功能齐全的搜索引擎库。该技术几乎适用于任何需要结构化搜索、全文搜索、分面、跨高维向量的最近邻搜索、拼写纠正或查询建议的应用程序。

此版本包含大量错误修复、优化和改进,下面重点介绍了其中一些。该版本可立即下载:
https://lucene.apache.org/core/downloads.html

Lucene 9.7.0 发布亮点:
新功能

  • 新的 IndexWriterupdateDocuments(Query, Iterable) 允许同时更新与查询匹配的多个文档。
  • 函数查询现在可以计算 kNN 向量之间的相似度分数。

优化
  • KNN 索引和查询现在可以利用向量化来计算向量之间的距离。要启用此功能,请严格使用 Java 20 或 21,并将 --add-modules jdk.incubator.vector 作为命令行参数传递给 Java 程序。
  • 如果 IndexSearcher 是使用执行器创建的,KNN 查询现在会并发运行。
  • 按字段排序的查询现在可以仅使用后值动态修剪命中。当深度分页时,这会产生显着的加速。
  • 减少计算软删除数量的合并时间开销。

运行时行为的变化
  • KNN 向量现在不允许具有非有限值,例如 NaN 或 ±Infinity。