IndexOptions是在lucene-core-x.jar包下面,其作用是在新建索引时候选择索引属性。
IndexOptions是一个枚举类:
枚举变量说明:
NONE | 不被索引 |
DOCS_AND_FREQS | 文档和词频建立索引 |
DOCS_AND_FREQS | 仅对文档和词频建立索引 |
DOCS_AND_FREQS_AND_POSITIONS | 文档、词频、词位置建立索引 |
DOCS_AND_FREQS_AND_POSITIONS_AND_OFFSETS | 文档、词频、词位置、偏移量建立索引 |
补充:位置(position)和偏移量(offset)的区别?
位置是基于词Term的,偏移量是基于字母和汉字的,如果不好理解可以参考以下图:
使用注意:
在建立索引时候会应用,选择不同的IndexOption可以较少索引所占的空间,提升查询的效率,但与之相反有些查询操作就不支持,例如:
FieldType fieldType = new FieldType();fieldType.setIndexOptions(IndexOptions.DOCS_AND_FREQS);fieldType.setStored(true);fieldType.setTokenized(true);
此时由于选择的是IndexOptions.DOCS_AND_FREQS枚举类型,此时选择短语查询PhraseQuery会失效,由于没有记录POSITIONS词位置,此时无法进行短语查询。