lucene的Document对象的详解

一、Doucment类

       Document类是lucene进行索引创建和查询出结果的基本的逻辑单元,其主要是用来进行存取Field相关的字段信息,

与数据库进行类比,Document相单于数据库中的一行记录,Field则为一条记录的字段。document中提供了多种方式来操作Field

Document的API
Method 相 关 描 述
public final void add(IndexableField field) 添加Field字段
public final void removeField(String name) 根据Field 的name属性 移除某个Field字段
public final void removeFields(String name) 根据Field 的name属性 移除所有符合name的Field字段
public final BytesRef[] getBinaryValues(String name) 根据Field的name属性 获取Field并将其转换为二进制数据(多个)
public final BytesRef getBinaryValue(String name) 根据Field的name属性 获取Field并将其转换为二进制数据(一个)
public final IndexableField getField(String name) 根据name获取Field信息(多个)
public IndexableField[] getFields(String name) 根据name获取Field信息(一个)
public final List<IndexableField> getFields() 根据name获取Field信息(多个)
public final String[] getValues(String name) 根据Field的name属性获取所有符合Field的value属性
public final String get(String name) 根据Field的name属性获取Field的value属性

二、Field类

    lucene中的Field对象是luene进行创建索引的具体字段,Field主要包含如下三个属性 name(字段名称) ,value(字段对应的值),IndexableFieldType(该字段的配置信息,是否存储,是否分词等等属性配置),常用的Field子类的属性详解

Field类

数据类型

Analyzed

是否分词

Indexed

是否索引

Stored

是否存储

说明

StringField(FieldName, FieldValue,Store.YES))

字符串

N

Y

Y或N

这个Field用来构建一个字符串Field,但是不会进行分词,会将整个串存储在索引中,比如(订单号,身份证号等)

是否存储在文档中用Store.YES或Store.NO决定

LongField(FieldName, FieldValue,Store.YES)

Long型

Y

Y

Y或N

这个Field用来构建一个Long数字型Field,进行分词和索引,比如(价格)

是否存储在文档中用Store.YES或Store.NO决定

StoredField(FieldName, FieldValue) 

重载方法,支持多种类型

N

N

Y

这个Field用来构建不同类型Field

不分析,不索引,但要Field存储在文档中

TextField(FieldName, FieldValue, Store.NO)

TextField(FieldName, reader)

字符串

Y

Y

Y或N

如果是一个Reader, lucene猜测内容比较多,会采用Unstored的策略.

猜你喜欢

转载自blog.csdn.net/liushangzaibeijing/article/details/84767103