开源全文检索、搜索函数库Apache Lucene 9.0性能大幅提升

用于全文检索和搜索的开源项目Apache Lucene,开发团队发布最新的9.0版本,这个版本的更新重点之一,便是大幅度的性能提升,无论是分面式分类(Taxonomy Faceting)还是排序算法,速度都有数倍的提升。

Apache Lucene是一个高性能且全功能的搜索引擎函数库,以程序语言Java开发而成,几乎适用于所有结构搜索、全文检索、分面、跨高维矢量最邻近搜索,也可用于拼写校正或是查询建议等使用场景。Apache Lucene同时也是Elasticsearch和MongoDB Atlas应用程序和服务的基础。

这个版本加入的新功能,开发团队借由使用HNSW(Hierarchical Navigable Small World)图算法,对高维数值矢量提供了最邻近搜索法。同时还强化了对多语言的支持,包括加入新的塞尔维亚语、尼泊尔语和泰米尔语的分析器,并且对日语提供IME友善的自动提示,在Snowball 2分析器提供印地语、印尼语、塞尔维亚语、泰米尔语和意第绪语等词干分析。

Apache Lucene 9.0在性能上,更是有显著的提升,像是分面式分类法的速度提升至400%,多维度点索引则快10%到15%。而且点索引的字段排序速度也提升了数倍,官方解释,该优化在8.x后期版本,就开始提供用户选择性激活,但从9.0开始默认激活,但用户也可以选择停用。

开发团队重新调整ConcurrentMergeScheduler设置,通过假设系统使用现代高速I/O,来提高索引性能,能够避免过去系统以启发式方法,错误侦测系统使用I/O所产生的问题。另外,发布列表的编码,从FOR-delta变更为PFOR-delta,能够更节省磁盘空间。

而在Apache Lucene 9.0中,不再有拆分的组件,但这项调整需要重命名Lucene核心JAR外的一些组件,因此用户可能需要对导入进行一些相对应调整,另外,值得注意的是,用户要在Apache Lucene 9.0中使用模块系统,要将其假设为试验性阶段,官方提到,在9.x版本将会有更多的改进。