Lucene - 查询编程


我们在前面的章节Lucene - 搜索操作中已经看到,Lucene 使用 IndexSearcher 进行搜索,并使用 QueryParser 创建的 Query 对象作为输入。在本章中,我们将讨论各种类型的查询对象以及以编程方式创建它们的不同方法。创建不同类型的查询对象可以控制要进行的搜索类型。

考虑高级搜索的情况,许多应用程序都提供高级搜索,其中为用户提供了多个选项来限制搜索结果。通过查询编程,我们可以很容易地实现同样的目的。

以下是我们将在适当时候讨论的查询类型列表。

编号 类别和描述
1 术语查询

此类充当在索引过程中创建/更新索引的核心组件。

2 术语范围查询

当要搜索一系列文本术语时,使用 TermRangeQuery。

3 前缀查询

PrefixQuery 用于匹配索引以指定字符串开头的文档。

4 布尔查询

BooleanQuery 用于搜索使用AND、ORNOT运算符进行多个查询的结果的文档。

5 短语查询

短语查询用于搜索包含特定术语序列的文档。

6 通配符查询

WildcardQuery 用于使用通配符(如“*”)搜索任何字符序列的文档,?匹配单个字符。

7 模糊查询

FuzzyQuery 用于使用模糊实现来搜索文档,这是基于编辑距离算法的近似搜索。

8 匹配所有文档查询

MatchAllDocsQuery 顾名思义匹配所有文档。