Field的改進
Lucene1.4主要提供下列四種不同類型的Field:
Keyword,UnStored,UnIndexed,Text
在Lucene2.0中是通過三個內部類Field.Index,Field.Store,Field.termVector(項向量)的組合來區(qū)分Field的具體類型.具體如下:
Field.Store.COMPRESS:壓縮保存,用于長文本或二進制數據
Field.Store.YES:保存
Field.Store.NO:不保存
Field.Index.NO:不建立索引
Field.Index.TOKENIZED:分詞,建索引
Field.Index.UN_TOKENIZED:不分詞,建索引
Field.Index.NO_NORMS:不分詞,建索引.但是Field的值不像通常那樣被保存,而是只取一個byte,這樣節(jié)約存儲空間
Field.TermVector.NO:不保存term vectors
Field.TermVector.YES:保存term vectors
Field.TermVector.WITH_POSITIONS:保存term vectors.(保存值和token位置信息)
Field.TermVector.WITH_OFFSETS:保存term vectors.(保存值和Token的offset)
Field.TermVector.WITH_POSITIONS_OFFSETS:保存term vectors.(保存值和token位置信息和Token的offset)
而Field的構造函數也用到了這三個內部類:
Field(String, byte[],Field.Store)
Field(String, Reader)
Field(String, Reader, Field.TermVector)
Field(String, String, Field.Store, Field.Index)
Field(String, String, Field.Store, Field.Index, Field.TermVector)
其中Field(String, Reader)和Field(String, Reader, Field.TermVector)默認為Field.Index.TOKENIZED和Field.Store.NO的.我們可以很簡單的建立起1.4版本的Field類型和2.0間的轉換(這看上去似乎沒有什么必要,只是覺得對于理解還是有點幫助的)
Keyword <==> Store.YES,Index.UN_TOKENIZED;
UnIndexed <==> Store.YES,Index.NO;
UnStored <==> Store.NO,Index.TOKENIZED;
Text(String, Reader) <==> Store.NO,Index.TOKENIZED;
Text(String,String) <==> Store.YES,Index.TOKENIZED.