在包org.apache.lucene.document中,三個(gè)類(lèi),其中DateField是用來(lái)處理日期與字符串轉換的工具類(lèi),來(lái)方便的處理日期類(lèi)型的Field。
Field就像我們學(xué)過(guò)的數據庫中的字段,簡(jiǎn)單的說(shuō),就是一個(gè)名值對。這個(gè)域有三種屬性,分別是
isStored - 是否被存儲
isIndexed - 是否被索引
isTokenized - 是否分詞
這些屬性的組合又構成了四種不同類(lèi)型的Field,而且各有用途,用Xerdoc DSearch中舉個(gè)例子:
Keyword(String name, String value)
存儲、索引、不分詞,用于URI(比如MSN聊天記錄的日期域、比如MP3文件的文件全路徑等等)
UnIndexed(String name, String value)
存儲、不索引、不分詞,比如文件的全路徑
UnStored(String name, String value)
不存儲、索引、分詞,比如HTML的正文、Word的內容等等,這部分內容是要被索引的,但是由于具體內容通常很大,沒(méi)有必要再進(jìn)行存儲,可以到時(shí)候根據URI再來(lái)挖取。所以,這部分只分詞、索引,而不存儲。
Text(String name, String value)
存儲、索引、分詞,比如文件的各種屬性,比如MP3文件的歌手、專(zhuān)輯等等。
Text(String name, Reader value)
不存儲、索引、分詞。
Field經(jīng)常需要進(jìn)行Name的比較,比如:
因此,基于效率上的考慮,Field的fieldName(字段名)是要被intern的,。如果你不明白Intern,可以看看這篇文章"Can I use ‘==’ to compare two String?"。
Lucene中的Document(文檔)就如同數據庫中的一個(gè)數據列一樣,是一個(gè)Field的集合。類(lèi)Document用一個(gè)Vector來(lái)存儲這個(gè)Field集合,然后提供一些基本的add, remove等接口來(lái)進(jìn)行管理。
Document還能設置這個(gè)文檔的boost(翻譯成權重?評分?),這些會(huì )在后面講到。
Field和Document都是final Class,不能被繼承。
聯(lián)系客服