Lucene之Field常用类型

一、Field类型

Field类型数据类型是否分词是否索引是否存储说明
StringField(FieldName, FieldValue, Store.YES)字符串NYY/N字符串类型Field, 不分词, 作为一个整体进行索引(如: 身份证号, 订单编号), 是否需要存储由Store.YES或Store.NO决定
LongField(FieldName, FieldValue, Store.YES)数值型代表YYY/NLong数值型Field代表, 分词并且索引(如: 价格), 是否需要存储由Store.YES或Store.NO决定
StoredField(FieldName, FieldValue)重载方法, 支持多种类型NNY构建不同类型的Field, 不分词, 不索引, 要存储. (如: 商品图片路径)
TextField(FieldName, FieldValue, Store.NO)文本类型YYY/N文本类型Field, 分词并且索引, 是否需要存储由Store.YES或Store.NO决定
Field(FieldName, FieldValue, FieldType)自定义类型YYY/N自定义是否存储、索引、分类、设置权重等

二、Field特性

  • 是否分词:根据业务需要来判断是否进行分词,分词的目的是为了索引,如名称、描述等,分词后可以用关键词进行索引;另外有些属性不需要分词,需要精准查询,如身份证号,编号等
  • 是否索引:需要被用户关键词搜索的都需要建立索引,不需要被索引的可直接存储,不被索引查询
  • 是否存储:需要给用户返回的信息都需要存储,如不存储则无法返回

三、代码实现

// StringField类型
Field sField = new StringField("sField", StringField, Field.Store.YES);

//LongField类型
Field lField = new LongField("lField", LongField, Field.Store.YES);

//StoredField类型
Field sField2 = new StoredField("sField2", StoredField, Field.Store.YES);

//TextField类型
Field tField = new TextField("tField", TextField, Field.Store.YES);

//自定义类型
FieldType fieldType = new FieldType();// 重构FieldType类
fieldType.setIndexed(true);// set 是否索引
fieldType.setStored(true);// set 是否存储
fieldType.setTokenized(true);// set 是否分类
fieldType.setOmitNorms(false);// set 是否可以设置权重
Field field = new Field("Field", Field, fieldType);
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值