1.什么是Lucene?
(1)根据Lucene官网的定义,Lucene包含:
Lucene Core 旗舰子项目,提供基于Java的索引和搜索技术,以及拼写检查,高亮显示和优秀的分析/标记能力。
Solr 基于Lucene核心构建的高性能搜索服务器,具有XML/HTTP和JSON/python/ruby API、能够进行高亮显示、分面搜索、缓存、备份和并具有Web管理界面。
PyLucene 基于Python的Lucene核心组件。
(2)百度百科,给出Lucene的定义:
Lucene是apache软件基金会 jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,但它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎(英文与德文两种西方语言)。Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。Lucene是一套用于全文检索和搜寻的开源程式库,由Apache软件基金会支持和提供。Lucene提供了一个简单却强大的应用程式接口,能够做全文索引和搜寻。在Java开发环境里Lucene是一个成熟的免费开源工具。
2.Lucene的优势
3.基本概念
- Document: 它是在索引和搜索过程中数据的主要表现形式,或者称“载体”,承载着我们索引和搜索的数据,它由一个或者多个域(Field)组成。
- Field: 它是Document的组成部分,由两部分组成,名称(name)和值(value)。
- Term: 它是搜索的基本单位,其表现形式为文本中的一个词。
- Token: 它是单个Term在所属Field中文本的呈现形式,包含了Term内容、Term类型、Term在文本中的起始及偏移位置。
- Segment:每个索引被写成多个段,段具有一次写入,多次读取的特点。只要形成了,段就无法被修改。例如:被删除文档的信息被存储到一个单独的文件,但是其它的段文件并没有被修改。
- segments merge:多个段是可以合并的,这个合并的过程称为segments merge。经过强制合并或者Lucene的合并策略触发的合并操作后,原来的多个段就会被Lucene创建的更大的一个段所代替了。很显然,段合并的过程是一个I/O密集型的任务。这个过程会清理一些信息,比如会删除.del文件。除了精减文件数量,段合并还能够提高搜索的效率,毕竟同样的信息,在一个段中读取会比在多个段中读取要快得多。但是,由于段合并是I/O密集型任务,建议不好强制合并,小心地配置好合并策略就可以了。