我开始学习Lucene,所以我正在阅读Lucene in Action。本书的摘录是:
Keyword—Isn’t analyzed, but is indexed and stored in the index verbatim.
This type is suitable for fields whose original value should be preserved in
its entirety, such as URLs, file system paths, dates, personal names, Social
Security numbers, telephone numbers, and so on
我从中理解的是,如果文本使用关键字字段编制索引,则不会对其进行分析(不会拆分为标记),而是将其编入索引。但是,我不明白的是and stored in the index verbatim
。
我对存储在索引中感到困惑。我假设如果文本被索引,它将被存储在索引数据结构中。
任何人都可以用一个例子来解释我吗?
答案 0 :(得分:2)
我认为你必须阅读第一版Lucene in Action。那本书已经11岁了,绝望已经过时了。我不会过分担心理解Lucene 1.4的惯例。
The Second Edition可用。它已经有五年历史了,基于Lucene 3.0,所以它肯定有点过时,特别是自lucene 4.0版本发生了重大变化,但并非绝对如此。阅读肯定会很多更有用。
但是,存储和索引字段之间的区别仍然存在。用Lucene的说法:
索引 - 该字段已编入索引,可以进行搜索。关键字字段(或者,最近,StringField
)未被分析,但它们已被编入索引,因此可以在不进行标记化的情况下搜索其完整内容。
存储 - 该字段与索引表单分开存储,以便以后检索。当您从Lucene获得搜索结果时(例如,从IndexSearcher.doc(int)
获得),您获得的文档将只包含存储的字段。
因此,您可以拥有一个可以搜索但不会在结果中返回的字段,或者在结果中返回但无法搜索的字段。