一、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);