Lucene 基础教程

original icon
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.knowledgedict.com/tutorial/lucene-query-programming.html

Lucene 查询方式


Lucene 的查询操作最终需要调用 IndexSearcher 类中的 search 方法,同时传入 Query 实例作为参数。Query 的子类可以直接实例化,也可以通过使用 QueryParser 类实例化。

说明 类和描述
通过项进行查询 TermQuery
对索引项中特定项进行搜索是最基本的搜索方式。Term 是最小的索引片段,每个 Term 包含了一个域名和一个文本值。
在指定的项范围内查询

TermRangeQuery
索引中的各个 Term 对象会按照字典编排顺序进行排序,并允许在 Lucene 的 TermRangeQuery 对象提供的范围内进行文本项的直接搜索。版本 2.9 开始。

在指定的数字范围内查询 NumbericRangeQuery
使用 NumbericField 对象来索引域,使用 NumbericRangeQuery 类在某个特定范围内搜索该域。 版本 6.0 之后废弃该类。
前缀匹配查询 PrefixQuery
PrefixQuery 用于匹配其索引开头以指定的字符串的文档。
组合查询 BooleanQuery
BooleanQuery 本身是一个 Boolean 子句(clauses)的容器。这个子句可以是表示逻辑“与”、逻辑“或”或者逻辑“非”的一个子查询。这些属性允许逻辑 AND、OR 和 NOT 组合。
通过短语查询 PhraseQuery
PhraseQuery 类会根据词的位置信息定位某个距离范围内的项所对应的文档。
通配符查询 WildCardQuery
WildcardQuery 用于搜索不完整的、缺少某些字母的项。Lucene 使用两个标准的通配符:*代表0个或者多个字母,?代表0个或者1个字母。
模糊查询 FuzzyQuery
FuzzyQuery 用于搜索使用模糊实现,它是一种基于编辑距离算法的近似搜索文件。
匹配所有文档查询 MatchAllDocsQuery
MatchAllDocsQuery 顾名思义,匹配索引中的所有文件。
万能查询 QueryParser
万能查询(上面的都可以用这个来查询到)。

示例

a=1
搜索过程是由Lucene所提供的核心功能之一。下图说明了搜索过程和使用的类。 IndexSearcher是搜索过程中最重要的和核心组件。 ...
Lucene 的 Directory 是一个抽象类,是针对索引文件目录操作的抽象类,对文件操作都是通过 Directory 来实现的;Dir ...
索引过程是Lucene提供的核心功能之一。下图说明了索引过程和使用的类。IndexWriter是索引过程中最重要的和核心组件。 ...
Elasticsearch 除了精确值查询外,还支持 range query,即范围查询,它们的查询介于一定范围之内的值,适用于数字、日期及 ...
在Django中,查询是通过模型管理器(ModelManager)来实现的。示例:假设我们有一个名为Book的模型,其中包含图书的信息,我们 ...