如果检索的过程过于复杂,那么搜索引擎也就失去其优势了。本小节主要介绍使用Lucene进行检索的流程。
11.1.1 初始化Lucene的检索工具IndexSearcher
IndexSearcher是Lucene中最基本的检索工具,所有的检索都会用到IndexSearcher检索工具,但是在使用IndexSearcher之前,还要做一些准备工作,即对检索工具IndexSearcher进行初始化。
初始化IndexSearcher,需要设置索引存放的路径,这样才能让查询器定位索引,用于后面进行搜索。如以下为一个实例化IndexSearcher的过程:
Searcher searcher = new IndexSearcher(indexDir);
返回的结果是IndexSearcher类的一个实例,indexDir表示索引文件的存放路径。当然,初始化IndexSeacher不只这一种方式,详细内容将在后面的小节中说明。
11.1.2 构建Query
Query的中文意义就是“查询”。在Lucene中,它是一个很重要的概念,就是指对于需要查询的字段采用什么样的方式进行查询,如模糊查询、语义查询、短语查询、范围查询、组合查询等。正是因为Query的存在,Lucene才有了非常丰富的查询语言。
在使用Query之前,需要首先生成一个Query对象。Lucene既允许直接生成一个Query类型的对象,也允许使用QueryParser类的parse()方法来返回一个Query类型的对象。这两种方法在功能上是完全一样的,只是后者在使用时更方便一些,而前者则更为灵活。
11.1.3 搜索并处理返回结果
在构建完Query对象后,就可以使用前面已经初始化好的IndexSearcher工具来进行检索了。IndexSearcher提供了良好的检索接口,用户只需简单地将Query对象传入,就可以得到一个返回结果。当然,这个过程看似简单,其中也有许多值得思考的问题,如检索结果的排序、过滤等。具体的内容将在后面的章节进行介绍。







