Lucene 索引 : Store and indexing modes explained

标签 lucene

我想我还是不理解 lucene 索引选项。

下面的选项是

  • Store.Yes
  • Store.No

  • Index.Tokenized
  • Index.Un_Tokenized
  • Index.No
  • Index.No_Norms

我不太了解商店选项。为什么您不想存储您的字段?
标记化是拆分内容并删除干扰词/分隔符(如“和”、“或”等)
我不知道规范是什么。 如何存储标记化的值?
如果我在“fieldName”中存储一个值“my string”会怎样? 为什么不查询

fieldName:my string

返回什么?

最佳答案

商店.是

表示该字段的值将存储在索引中

商店号

意味着该字段的值不会存储在索引中

Store.Yes/No 不影响 lucene 的索引或搜索。它只是告诉 lucene 您是否希望它充当字段中值的数据存储。如果您使用 Store.Yes,那么当您搜索时,该字段的值将包含在您的搜索结果文档中。

如果您将数据存储在数据库中并且仅使用 Lucene 索引进行搜索,那么您可以在所有字段上使用 Store.No。但是,如果您也将索引用作存储,那么您将需要 Store.Yes。

索引.标记化

意味着该字段在被索引时将被标记化(你有那个)。这对于包含多个词的长字段很有用。

Index.Un_Tokenized

表示该字段不会被分析,会被存储为一个单独的值。这对于关键字/单词和一些短的多词字段很有用。

索引号

正如其所言。该字段不会被索引,因此不可搜索。但是,您可以使用 Index.No 和 Store.Yes 来存储您不希望被搜索到的值。

Index.No_Norms

与 Index.Un_Tokenized 相同,只是通过不存储一些规范化数据来节省几个字节。此数据用于增强和字段长度归一化。

要进一步阅读,lucene javadoc 是无价的(当前 API 版本 4.4.0):

关于你的最后一个问题,关于为什么你的查询没有返回任何东西,而不知道你是如何索引那个字段的,我会说这是因为你的 fieldName 限定符只附加到“我的”字符串。要搜索您想要的短语“我的字符串”:

fieldName:"my string"

在 fieldName 字段中同时搜索单词“my”和“string”:

fieldName:(my string)

关于Lucene 索引 : Store and indexing modes explained,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/650643/

相关文章:

java - hibernate 搜索: single search term with space

solr - 获取索引 lucene 文档子集中最常用的术语

solr - Lucene - 很少或很多索引

search - 在Elasticsearch中查找包含术语的文档数量

git - Github 上的高级搜索?

java - Apache Solr - 为什么分片索引的结果分数与非分片索引的结果分数不同?

java - 如何在Lucene中搜索特定范围内的术语

lucene - 对多个请求使用同一 indexSearcher 实例时出现问题

c# - SearchManager 与 ContentSearchManager?

java - Lucene - 精确的字符串匹配