之前一直用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易读,也可以自己封闭灵活。
创建Field时用到的FieldType类型说明
猜你喜欢
转载自sanzang-xulong-126-com.iteye.com/blog/2170762
今日推荐
周排行