Apache Lucene是Apache的一个核心开源项目,是目前最好的搜索框架。扩展性强,支持全文检索,各种各样的数据结构,支持不同的查询需求。
目前使用Apache Lucene最好的两款开源软件:
- Apache solr,Apache 旗下的开源搜索引擎,支持各种数据格式的检索(json、pdf、csv等),实时性较差
- Elasticsearch,目前最火的开源搜索引擎,实时性强,扩展性强。
如果说Elasticsearch和solr是超跑,那Lucene可以说是汽车的发动机。
以下是Lucene官方自夸:
- Scalable, High-Performance Indexing
- Powerful, Accurate and Efficient Search Algorithms
本文解析Lucene基于Lucene7.2.1,也会带一些以前的版本。
#基本概念
#Index(索引)
Lucene中的index是由很多个Documents组成的一个数据体,可以理解成是数据库中的表,而表中的行就是Document。Lucene中数据即索引的概念跟普通关系型数据库还是有很大区别的。它是把数据按照不同的索引方式全部索引起来,用来进行检索。
#Document(文档)
就像上面提到的,可以理解成为数据库的行,或者mongo中的Document。一个index下有很多Documents,每个Doc