创建Field时用到的FieldType类型说明

之前一直用Lucene老版本,今天看了下4.6发现好多配置都变了地儿,也是翻翻文档才找到怎么用,下面简单说说怎么用,有不明确的地方请大神指教。

首先在创建Field时,构造函数中有一项参数为FieldType type, FieldType实现IndexableFieldType接口,IndexableFieldType接口中有几个方法都是建立Field常用的这里不多说了。

说下常用的FieldType有
StringField(可索引,不细分词)、
TextField(分词)、
LongField(和TextField相像但有些别)、
StoredField(存储 Field信息)、
DocValuesField(存储Doc对应的Term信息)、
NumericType(数字域)。

上面写的这些都是对FieldType对像中属性的设置组合封闭。
详细说明一下FieldType包含的属性对建立Field和索引的影响。

indexed:    Field值是否生成Term。
stored:     是否存储。 
tokenized:  是否分词。   
storeTermVectors: 是否存储向量信息。
storeTermVectorOffsets
storeTermVectorPositions
storeTermVectorPayloads: 是否存储Payloads信息。
omitNorms:  是否存储norm信息,用于评分Boost值和会处理。
frozen:      用来阻止Field在实例化后完成前修改。(checkIfFrozen方法会用到这个属性,官方建议设置为true)。
indexOptions--| 根据自己的业务对不同的Field进行个性化设置,提升效率和内存空间。
                   |DOCS_ONLY:文档只包含索引,位置和词频将忽略,查询短语和位置信息将引起异常.
                |DOCS_AND_FREQS:文档只包含索引和词频,位置将忽略,这个可以正常评分,查询短语和位置也将引发异常.
                |DOCS_AND_FREQS_AND_POSITIONS:文档包含索引位置和词频,这是一个典型的默认为全文搜索:全部启用评分和位置查询的支持.
                |DOCS_AND_FREQS_AND_POSITIONS_AND_OFFSETS:文档包含索引、位置、词频和偏移量。

docValueType--| 通过docid,找到doc包含的Term,在我理解他与FieldCache数组差不多,只不过支持多个Term的对回。
                   |NumericDocValuesField:数字类型。
                   |SortedDocValuesField:字符类型。
                   |SortedSetDocValuesField:支持多Term。

建立Field时可以选择已经封装好的FieldType易读,也可以自己封闭灵活。

猜你喜欢

转载自sanzang-xulong-126-com.iteye.com/blog/2170762