關於lucene的索引的建立
document,在lucene中,代表邏輯文件,本身和物理的檔案沒有關係,作為一種資料來源的集合,像lucene提供原始的要索引的文字內容。
field型別主要是用於標識當前資料來源的各種屬性,儲存來自資料來源的資料內容。
document-field類似於關係型資料庫,一張表可以看成是lucene中的索引,表中的每一條記錄就是lucene,而表中的每乙個字段就是field.
資料來源的各種屬性包括以下部分:
是否儲存:該資料來源的資料是否完整儲存於索引中,適合於內容較為較短的簡單資料來源,若將大段文字儲存在索引中,會使索引容量過大。
是否索引:該資料來源的資料是否要在使用者檢索時被檢索。
是否分詞:該資料來源的資料是否要晉國分詞。
舉例而言: 圖書管理系統
書號:id,書號是唯一編號,需要索引和儲存,但不需要分詞。
書名:需要分詞、索引,另外在查詢結果中需要完整顯示,所以需要儲存。
作者名:類似於書號,需要儲存和索引,不需要索引。
書的出版日期:不需要對出版日期查詢,因此不需要被索引,但在現實結果時需要顯示。因此需要儲存,不需要索引和分詞。
書的摘要:當不需要包含完整的摘要資訊時,不需要對摘要的完整資訊進行儲存。索引和分詞。
**:儲存,不需要分詞和索引。
store.no:表示該field不需要被儲存
store.yes: 表示該field需要被儲存
store.compress:表示使用壓縮方式來儲存field的值
index.no:該field不需要索引,既不需要查詢
index.tokenized:表示該field先被分詞再索引
index.un_tokenized:表示不對該field進行分詞,但是要對它進行索引,也就是該field會被使用者查詢。
index.no_norms:表示對該field進行索引,但是不使用analyzer,同時禁止它參加評分,主要時為了減少記憶體的消耗。
/**
* store
配置field
字段是否儲存到索引庫
* yes
:字段儲存到索引庫中,以後查詢的時候可以查詢出來
* no
:不儲存到索引庫中
* index: lucene
為提高查詢效率
,會像字典一樣建立索引
. 配置此欄位是否要建立索引
(建立索引的
field
就是term),
* 如果建立索引以後就可以通過此欄位查詢記錄
* not_analyzed:
建立索引,但是
field
的不分詞
(不分開
) 整體作為乙個索引
* analyzed:
不但要建立索引此
field
會被分詞
(可能乙個
field
分為多個
term
的情況)
* no:
不建立索引
,以後不能通過此欄位查詢資料
* store yes index: analyzed:
此field
可以儲存,而且
field
關鍵字支援分詞
* store yes index
:not_analyzed
此field
可以儲存,但是
field
不支援分詞
,作為乙個完成
term
例如:
數字id price
和url
專業詞彙
* store yes index: no:
可以查詢出此字段
, 但是此字段不作為查詢關鍵字
* store no index: analyzed:
此field
不儲存,
但是此field
可以做為關鍵字搜尋
* store no index: not_analyzed:
此field
不儲存,
但是此field
可以做為整體
(不拆分
)關鍵字搜尋
* store no index: no:
既不建索引也不儲存
沒有任何意義
,如果這樣配置則會丟擲異常 */
lucene學習筆記 1
indexing主要使用的類 indexwriter 較核心的類,index檔案由它建立 directory 乙個抽象的標示index檔案位址的類,有兩個實現 fsdirectory和ramdirectory,前者是基於檔案系統,後者使用記憶體 analyzer 檔案的分析器 聽起來彆扭,還是叫an...
Lucene 學習筆記 1
今天開始研究lucene,有關lucene的簡單介紹我就不做介紹了,直接google一下就了解了,我根據的是 lucene in action 這本書來學習的。學習還在進行,把學習過程中的一些經驗和體會寫出來供和我一樣的新手參考。1 這本書對應的lucene版本。我一開始用最新的lucene 2.4...
lucene學習筆記 1
doug cutting 於2000年開始的專案 2001年9月後加入apache,lucene是doug cutting的middle name 目前lucene已經是apache的top level的專案,已經不在jakarta下面,同時也有了python,perl,c net,ruby 進行中...