基于Lucene的多索引搜索的研究与应用
2012-05-08高玉良张济强白瑶
高玉良 张济强 白瑶
摘要:Lucene是一个高性能、易扩展的基于Java技术的开源信息检索工具包,它可以为多种应用程序提供索引和搜索功能。该文探讨了Lucene中在多个索引上进行搜索的方式,分析了每种方式的性能以及应用范围,引进Java的线程池技术对多索引上的多线程搜索算法进行改进,并且通过实验验证改进算法的优越性。
关键词:Lucene;多索引;线程池
中图分类号:TP311文献标识码:A文章编号:1009-3044(2012)07-1470-03
Research and Application of Multi-index Based Lucene
GAO Yu-liang, ZHANG Ji-qiang, BAI Yao
(Dalian JiaoTong University, Dalian 116028, China)
Abstract: Lucene is a tool based on Java technology, it is an open source,and possess character of high performance and being easy to expand.Lucene provide a function to searcher for application.The paper discuss a searching method about mutile index in lucene,and its performance and range of application. Java Thread Pool are used to improve multile index ing searcher , and certify that this algorithm is higher performance.
Key words: Lucene; multi index; thread pool
对于大型的检索系统,索引文件可能存在于多个目录中,每次进行检索请求时,检索系统可能要对存在于多个目录中的索引文件进行检索。在这种情况下,Lucene主要提供两种方式,即MultiSearcher和ParalellMultiSearcher对存在于多目录中的索引进行搜索。MultiSearcher是用一个循环把存在于不同目录中的索引取出,然后逐个检索并合并搜索结果。ParalellMultiSearcher是用多线程的方式,对于不同目录中的索引建立不同的线程进行并行的搜索,同时动态的合并搜索结果。但以前的Lucene开发包中的ParalellMultiSearcher检索方式的性能低于MultiSearcher,本文对ParalellMultiSearcher的多线程实现方式进行改进,引入了线程池技术。
1 Lucene的构成及检索机制
1.1 Lucene的构成
Lucene是Apache基金会Jakarta的一个子项目,完全按照面向对象的思想设计而成。各个类之间满足低耦合的原则,是一个高效率的搜索工具包。Lucene完全由Java JDK开发而成,没有用到任何第三方开发包。基于Java语言良好的可移植性,Lucene也具有良好的跨平台特性。最新的Lucene开发包在2011年3月份发布,版本为3.0。
1.2 Lucene主要由以下部分组成
1) Analysis包。包括Lucene的语言分词器。最新的开发包提供很好的多语言分词器适应多语言检索系统的开发。……
