Lucene总的来说是:
在Lucene in action中,Lucene 的构架和过程如下图,
说明Lucene是有索引和搜索的两个过程,包含索引创建,索引,搜索三个要点。
让我们更细一些看Lucene的各组件:
那么如何调用这些组件呢?
下面开始介绍lucene API的调用过程使用方法:
索引过程如下:
◦创建一个IndexWriter 用来写索引文件,它有几个参数,INDEX_DIR 就是索引文件所存放的位置,Analyzer 便是用来对文档进行词法分析和语言处理的。 ◦创建一个Document 代表我们要索引的文档。 ◦将不同的Field 加入到文档中。我们知道,一篇文档有多种信息,如题目,作者,修改时间,内容等。不同类型的信息用不同的Field 来表示,在本例子中,一共有两类信息进行了索引,一个是文件路径,一个是文件内容。其中FileReader 的SRC_FILE 就表示要索引的源文件。 ◦IndexWriter 调用函数addDocument 将索引写到索引文件夹中。
检索过程如下:
◦IndexReader 将磁盘上的索引信息读入到内存,INDEX_DIR 就是索引文件存放的位置。 ◦创建IndexSearcher 准备进行搜索。 ◦创建Analyer 用来对查询语句进行词法分析和语言处理。 ◦创建QueryParser 用来对查询语句进行语法分析。 ◦QueryParser 调用parser 进行语法分析,形成查询语法树,放到Query 中。 ◦IndexSearcher 调用search 对查询语法树Query 进行搜索,得到结果TopScoreDocCollector 。
以上便是Lucene API函数的简单调用。
然而当进入Lucene的源代码后,发现Lucene有很多包,关系错综复杂。
然而通过下图,我们不难发现,Lucene的各源码模块,都是对普通索引和搜索过程的一种实现。
此图是上一节介绍的全文检索的流程对应的Lucene实现的包结构。(参照http://www.lucene.com.cn/about.htm中文章《开放源代码的全文检索引擎Lucene》)
了解了Lucene的整个结构,我们便可以开始Lucene的源码之旅了。