问题描述
我已经阅读了很多有关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 字段。
现在您可以分别搜索标题数据和正文数据。