Lucene Field类型

2021-07-15  本文已影响0人  caster

Field是Document的一部分,每个字段有三部分:名字,类型和值。字段的值可以是text(String,Reader或预先分词的TokenStream),binary(byte[]) 或者数字(Number)。字段类型由接口IndexableFieldType限制,FieldType类实现了此接口,建议当Field实例化后不要修改。

IndexableField接口定义了Field字段的基本信息,如字段名,字段类型,分词相关等。

public interface IndexableField {
  //字段名
  public String name();
  //字段类型
  public IndexableFieldType fieldType();
  //分词
  public TokenStream tokenStream(Analyzer analyzer, TokenStream reuse);
  //......
}

Field类实现了IndexableField接口,作为所有Lucene Field的父类。定义了字段名,字段值和字段类型以及多种字段的构造方法。

public class Field implements IndexableField {
  //字段类型
  protected final IndexableFieldType type;
  //字段名
  protected final String name;
  //字段值
  protected Object fieldsData;
  //分词
  protected TokenStream tokenStream;
  //构造方法
  protected Field(String name, IndexableFieldType type) {}
  public Field(String name, BytesRef bytes, IndexableFieldType type) {}
  //......
}  

Field核心属性:
是否分词(tokenized):id等不需要分词,句子短语等需要拆分为词查询的需要分词。
是否索引(indexed):将整个字段值或者分词后的词进行索引,用于查询。不需要检索查询的字段可以设置为否。
是否存储(stored):用于查询返回结果进行展示。

  1. TextField
    分词,索引,存储可选。
  2. StringField
    不分词,索引,存储可选。
  3. IntPoint,LongPoint,FloatPoint,DoublePoint
    分词,索引,不存储(如需存储,添加独立的StoredField)。
  4. StoredField
    不分词,不索引,存储。
上一篇 下一篇

猜你喜欢

热点阅读