Lucene简介
- by Hector
Lucene官网:
简介:
Lucene是apache软件基金会[4] jakarta项目组的一个子项目,是一个开放源代码[5]的全文检索引擎工具包,即它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎(英文与德文两种西方语言)。Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。
Lucene的原作者是Doug Cutting,他是一位资深全文索引/检索专家,曾经是V-Twin搜索引擎[6]的主要开发者,后在Excite[7]担任高级系统架构设计师,目前从事于一些Internet底层架构的研究。早先发布在作者自己的http://www.lucene.com/,后来发布在SourceForge[8],2001年年底成为apache软件基金会jakarta的一个子项目:http://jakarta.apache.org/lucene/。
优势: (1)索引文件格式独立于应用平台。 (3)优秀的面向对象的系统架构,使得对于Lucene扩展的学习难度降低,方便扩充新功能。 (5)已经默认实现了一套强大的查询引擎,用户无需自己编写代码即使系统可获得强大的查询能力,Lucene的查询实现中默认实现了布尔操作、模糊查询(Fuzzy Search[11])、分组查询等等。 关于亚洲语言的的切分词问题
(2)在传统全文检索引擎的倒排索引的基础上,实现了分块索引,能够针对新的文件建立小文件索引,提升索引速度。
(4)设计了独立于语言和文件格式的文本分析接口,索引器通过接受Token流完成索引文件的创立,用户扩展新的语言和文件格式,只需要实现文本分析的接口。
自动切分
词表切分
实现
实现非常简单
实现复杂
查询
增加了查询分析的复杂程度,
适于实现比较复杂的查询语法规则
存储效率
索引冗余大,索引几乎和原文一样大
索引效率高,为原文大小的30%左右
维护成本
无词表维护成本
词表维护成本非常高:中日韩等语言需要分别维护。
还需要包括词频统计等内容
适用领域
嵌入式系统:运行环境资源有限
分布式系统:无词表同步问题
多语言环境:无词表维护成本对查询和存储效率要求高的专业搜索引擎
安装和使用
下载:http://jakarta.apache.org/lucene/
注意:Lucene中的一些比较复杂的词法分析是用JavaCC生成的(JavaCC:JavaCompilerCompiler,纯Java的词法分析生成器),所以如果从源代码编译或需要修改其中的QueryParser
、定制自己的词法分析器,还需要从https://javacc.dev.java.net/下载javacc。