Field有兩個屬性可選:存儲和索引。
通過存儲屬性你可以控制是否對這個Field進行存儲;
通過索引屬性你可以控制是否對該Field進行索引。
這兩個屬性的正確組合很重要。
Field.Index | Field.Store | 說明 |
---|---|---|
TOKENIZED | YES | 被分詞索引且存儲 |
TOKENIZED | NO | 被分詞索引但不存儲 |
NO | YES | 這是不能被搜索的,它只是被搜索內容的附屬物。如URL等 |
UN_TOKENIZED | YES/NO | 不被分詞,它作爲一個整體被搜索,搜一部分是搜不出來的 |
NO | NO | 沒有這種用法 |
Field.Store.YES:存儲字段值(未分詞前的字段值)
Field.Store.NO:不存儲,存儲與索引沒有關係
Field.Store.COMPRESS:壓縮存儲,用於長文本或二進制,但性能受損
Field.Index.ANALYZED:分詞建索引
Field.Index.ANALYZED_NO_NORMS:分詞建索引,但是Field的值不像通常那樣被保存,而是隻取一個byte,這樣節約存儲空間
Field.Index.NOT_ANALYZED:不分詞且索引
Field.Index.NOT_ANALYZED_NO_NORMS:不分詞建索引,Field的值去一個byte保存
TermVector表示文檔的條目(由一個Document和Field定位)和它們在當前文檔中所出現的次數
Field.TermVector.YES:爲每個文檔(Document)存儲該字段的TermVector
Field.TermVector.NO:不存儲TermVector
Field.TermVector.WITH_POSITIONS:存儲位置
Field.TermVector.WITH_OFFSETS:存儲偏移量
Field.TermVector.WITH_POSITIONS_OFFSETS:存儲位置和偏移量