我想我还是不理解 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/