我想我仍然不理解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.No和Store.Yes来存储您不想搜索的值.
与Index.Un_Tokenized相同,除了通过不存储一些规范化数据将保存几个字节.该数据用于增强和场长标准化.
为了进一步阅读,lucene javadocs是无价的(当前的API版本4.4.0):
Field.Index
Field.Store
对于你的上一个问题,关于为什么你的查询没有返回任何东西,不知道你如何索引该字段,我会说这是因为你的fieldName限定符只附加到'my'字符串.要搜索您想要的短语"my string":
fieldName:"my string"
在fieldName字段中搜索单词"my"和"string":
fieldName :(我的字符串)