术语和字段之间的Lucene差异

问题描述

我已经阅读了很多有关Lucene索引和搜索的知识,但仍然不明白术语是什么?术语和字段之间有什么区别?

解决方法

一个非常粗略的类推是,字段就像数据库表中的列,而 term 就像每个数据库列中的内容。

更专门针对Lucene:

条款

术语是索引标记。参见here

Lucene分析器正在处理将文本分解为索引令牌(也称为术语)的管道

例如,如果您在文档中有以下句子...

"This is a list of terms"

...然后将其传递给空白标记器,这将生成以下术语:

This
is
a
list
of
terms
因此,

术语也是执行搜索时要放入查询中的内容。有关在传统查询解析器中如何使用它们的定义,请参见here

字段

字段是文档的一部分。

一个简单的例子是文档的 title 与文档的 body (其余文本/内容)。这些可以定义为Lucene索引中的两个单独的Lucene字段。

(显然,您需要能够解析源文档,以便可以将标题与正文分开-否则在构建Lucene索引时,无法正确填充每个单独的字段。)

然后您可以将所有标题的条款放入 title 字段;以及身体的术语进入 body 字段。

现在您可以分别搜索标题数据和正文数据。

您可以阅读有关字段herehere的信息。有多种不同类型的字段,具体取决于它们将要保存的数据类型(术语)。