Lucene中最难理解的就是索引的建立,而前几章的文字一直都在围绕着索引建立进行阐释,应该大部分都已经总结清楚了,如果过些日子我再回头看那些文字有些迷惑了,那么我想我是应该敲敲代码了。
建立索引的剩余小部分涉及到源码的解析,这个需要系统的分析总结,以后会专门设立一个章节来进行解析,包括Document的倒排,segment的命名,Document的同步锁等等。
这一章,我想对索引的search进行总结(因为,我们已经会建立索引了,目前并不关心其内部机制,只想知道后继的操作能干什么)。
之前我们建立索引的时候用到了IndexWriter类,而读取索引的时候用到了IndexReader,那么我们很容易想到对索引的查询——IndexSearcher。
其操作很简单,步骤如下:
1. 准备工作
2. 选择查询请求方式
3. 进行查询
(search方法有很多,这些方法都是整个检索系统的核心,但都是方法的重载。按返回值可以分为三类:第一类,返回Hits型对象,即返回查询结果;第二类,返回TopDocs和TopFieldDocs对象,即返回索引中得分较高的文档集合;第三类,返回值void,但是将返回结果存放在一个HitCollector对象中,以满足更多的业务需求。)
总结代码: