Lucene Field 分析笔记
????? Field 类也许是在文档索引期限间最重要的类了:该类在事实上控制着被索的域值。当创建好一个域时,你可以指定多个域外选项来控制Lucene在将文档添加进索引后针对该域的行为。
?
?
AbstractField--->Field--->FieldForMerge--->LazyField--->NumericField
?从源代码中,可以看出Field 构造函数如下
org.apache.lucene.document.FieldField(String, boolean, String, Store, Index, TermVector)Field(String, byte[])Field(String, byte[], int, int)Field(String, byte[], int, int, Store)Field(String, byte[], Store)Field(String, Reader)Field(String, Reader, TermVector)Field(String, String, Store, Index)Field(String, String, Store, Index, TermVector)Field(String, TokenStream)Field(String, TokenStream, TermVector)
?三个内部类Field.Index,Field.Store,Field.termVector
org.apache.lucene.document.Field.Indexpublic static final Index NO;不建立索引 public static final Index ANALYZED;分词,建索引public static final Index ANALYZED_NO_NORMS;分词,建索引(但是Field的值不像通常那样被保存,而是只取一个byte,这样节约存储 空间)public static final Index NOT_ANALYZED;不分词,建索引public static final Index NOT_ANALYZED_NO_NORMS;不分词,建索引(但是Field的值不像通常那样被保存,而是只取一个byte,这样节约存储 空间)org.apache.lucene.document.Field.Storepublic static final Store YES;保存public static final Store NO;不保存org.apache.lucene.document.Field.TermVector这个参数也不常用,它有五个选项。Field.TermVector.NO表示不索引Token的位置属性;Field.TermVector.YES则表示存储向量。Field.TermVector.WITH_OFFSETS表示额外索引Token的结束点;Field.TermVector.WITH_POSITIONS表示额外索引Token的当前位置;Field.TermVector.WITH_POSITIONS_OFFSETS表示额外索引Token的当前和结束位置;
?源码实例:
Field name=new Field("name","Leiwuluan",Store.YES,Index.NOT_ANALYZED);Field name=new Field("age","23",Store.YES,Index.NOT_ANALYZED);?