Lucene 匹配旧版本的 Keyword 和 UnIndexed 选项

Lucene matching Keyword and UnIndexed options from older version

旧版本

更新版本

For matching Keyword what would be the difference between

new Field( name, value, Field.Store.YES, Field.Index.NOT_ANALYZED )

new Field( name, value, Field.Store.YES, Field.Index.NOT_ANALYZED_NO_NORMS )

Matching Unindexed =

new Field( name, value, Field.Store.YES, Field.Index.NO )

And finally what could be the usage of ?

new Field( name, value, Field.Store.NO, Field.Index.NOT_ANALYZED )

NOT_ANALYZEDNOT_ANALYZED_NO_NORMS的区别在于没有规范。标准包括少量用于评分命中的元数据。这包括索引时间字段提升和长度范数。如果该字段只有一个术语(如 NOT_ANALYZED 字段通常那样),则长度范数并不真正相关。因此,如果您不需要在索引时进行字段提升,则可以安全地无规范地进行索引,并为每个文档的每个字段节省 space 字节。


是的,

new Field( name, value, Field.Store.YES, Field.Index.NO )

这将是索引仅存储的非索引字段的好方法。


用法:

new Field( name, value, Field.Store.NO, Field.Index.NOT_ANALYZED )

将在不进行分析的情况下对值的全部内容进行索引和搜索,并且不存储用于从索引中获取的值。传入的 Store 值是您是否需要能够从搜索结果中获取该数据。索引值控制您将如何搜索它(如果有的话)。

不要混淆:

new Field( name, value, Field.Store.NO, Field.Index.NO )

它的用法是抛出一个IllegalArgumentException