Term 和 Fields 之间的 Lucene 区别
Lucene difference between Term and Fields
我已经阅读了很多关于 Lucene 索引和搜索的内容,但仍然无法理解什么是 Term?term 和 fields 有什么区别?
一个非常粗略的类比是,字段就像数据库中的列table,而项就像每个数据库列中的内容。
更具体地说是 Lucene:
条款
术语是索引标记。见 here:
Lucene Analyzers are processing pipelines that break up text into indexed tokens, a.k.a. terms
因此,例如,如果文档中有以下句子...
"This is a list of terms"
...然后将其传递给空白分词器,这将生成以下术语:
This
is
a
list
of
terms
因此,术语也是您在执行搜索时放入查询中的内容。有关它们在经典查询解析器中的使用方式的定义,请参阅 here。
字段
字段是文档的一部分。
一个简单的例子是文档的 title 与 body(其余 text/content)的文件。这些可以定义为 Lucene 索引中的两个单独的 Lucene 字段。
(您显然需要能够解析源文档,以便您可以将标题与 body 分开 - 否则您无法在构建 Lucene 索引时正确填充每个单独的字段。)
然后您可以将标题的所有 terms 放入 title 字段;并将 body 的条款放入 body 字段。
现在您可以从 body 数据中单独搜索标题数据。
我已经阅读了很多关于 Lucene 索引和搜索的内容,但仍然无法理解什么是 Term?term 和 fields 有什么区别?
一个非常粗略的类比是,字段就像数据库中的列table,而项就像每个数据库列中的内容。
更具体地说是 Lucene:
条款
术语是索引标记。见 here:
Lucene Analyzers are processing pipelines that break up text into indexed tokens, a.k.a. terms
因此,例如,如果文档中有以下句子...
"This is a list of terms"
...然后将其传递给空白分词器,这将生成以下术语:
This
is
a
list
of
terms
因此,术语也是您在执行搜索时放入查询中的内容。有关它们在经典查询解析器中的使用方式的定义,请参阅 here。
字段
字段是文档的一部分。
一个简单的例子是文档的 title 与 body(其余 text/content)的文件。这些可以定义为 Lucene 索引中的两个单独的 Lucene 字段。
(您显然需要能够解析源文档,以便您可以将标题与 body 分开 - 否则您无法在构建 Lucene 索引时正确填充每个单独的字段。)
然后您可以将标题的所有 terms 放入 title 字段;并将 body 的条款放入 body 字段。
现在您可以从 body 数据中单独搜索标题数据。