天天看點

Lucene之Field常用類型

一、Field類型

Field類型 資料類型 是否分詞 是否索引 是否存儲 說明
StringField(FieldName, FieldValue, Store.YES) 字元串 N Y Y/N 字元串類型Field, 不分詞, 作為一個整體進行索引(如: 身份證号, 訂單編号), 是否需要存儲由Store.YES或Store.NO決定
LongField(FieldName, FieldValue, Store.YES) 數值型代表 Y Y Y/N Long數值型Field代表, 分詞并且索引(如: 價格), 是否需要存儲由Store.YES或Store.NO決定
StoredField(FieldName, FieldValue) 重載方法, 支援多種類型 N N Y 建構不同類型的Field, 不分詞, 不索引, 要存儲. (如: 商品圖檔路徑)
TextField(FieldName, FieldValue, Store.NO) 文本類型 Y Y Y/N 文本類型Field, 分詞并且索引, 是否需要存儲由Store.YES或Store.NO決定
Field(FieldName, FieldValue, FieldType) 自定義類型 Y Y Y/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);
           

繼續閱讀