一、Doucment类
Document类是lucene进行索引创建和查询出结果的基本的逻辑单元,其主要是用来进行存取Field相关的字段信息,
与数据库进行类比,Document相单于数据库中的一行记录,Field则为一条记录的字段。document中提供了多种方式来操作Field
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的策略. |