學習筆記1 關於Lucene的索引的建立

2021-08-21 16:30:12 字數 2198 閱讀 6946

關於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 進行中...