lucene學習筆記 1

2021-04-16 15:41:41 字數 2002 閱讀 7491

indexing主要使用的類

indexwriter

較核心的類,index檔案由它建立

directory

乙個抽象的標示index檔案位址的類,有兩個實現:fsdirectory和ramdirectory, 前者是基於檔案系統,後者使用記憶體

analyzer

檔案的分析器(聽起來彆扭,還是叫analyzer好了)的抽象,這個類用來處理分詞(對中文尤其重要,轉換大小寫(computer->computer,實現查詢大小寫無關),轉換詞根(computers->computer),消除stop words等,還負責把其他格式文件轉換為純文字等

document

乙個document對應乙個文件記錄,他有很多field,用來處理不同的資訊,和檢索相關

field

有4(5?)種型別的field, 下面專門列出

stop words: 出現頻率非常高的一些詞彙,它們一般沒有檢索的意義, 比如英文中的(as a, an, the, in)

型別analyzed

indexed

stored

說明field.keyword(string,string/date)yy

這個field用來儲存會直接用來檢索的比如(身份證號,姓名,日期等)

field.unindexed(string,string)

y不會用來檢索的資訊,但是檢索後需要顯示的,比如,硬體序列號,文件的url位址

field.unstored(string,string)yy

大段文字內容,會用來檢索,但是檢索後不需要從index中取內容,可以根據url去load真實的內容

field.text(string,string)yy

y檢索,獲取都需要的內容,直接放index中,不過這樣會增大index

field.text(string,reader)yy

如果是乙個reader, lucene猜測內容比較多,會採用unstored的策略.

searching主要使用的類

indexsearcher

以唯讀的方式訪問index(注意indexreader不是唯讀的),需要傳給他乙個query物件來搜尋

term

term是乙個搜尋的基本單位,包含乙個field(目標)和乙個value(條件),可以直接用new term("field","condition value")構造

query

query有很多子類,比如booleanquery,phrasequery等,可以在term基礎上加上邏輯(是 否, 或)

termquery

乙個很基本的query, 可以由term構造 new termquery(term);

hits

包含了搜尋的結構,預設按照相關度排序,hits並不會把所有記錄(可能很大)直接儲存,而是有乙個lazy loading機制

tips

注:關於field的型別,上面提到的大概是luncene2.0以前的版本,2.0以後版本的field有三種屬性:

private boolean isstord = false;

private boolean isindexed = true;

private boolean istokenized = true;

store類有三個公有靜態屬性:

store.no:表示該field不需要儲存;

store.yes:表示該field需要儲存;

store.compress:表示用壓縮的方式儲存field值;

index類有四個公有的靜態屬性:

index.no:表示該field不需要索引,也就是使用者不需要去查詢該field的值;

index.tokenized:表示該field先被分詞再索引;

index.un_tokenized:表示不對該field進行分詞,但是要對它進行索引。field會被查詢;

index.no_norms:表示對該field進行索引,但是不用analyzer,同時禁止它參加評分,主要是為了減少記憶體的消耗。

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

Lucene學習筆記 1

lucene學習筆記 可以搜尋文字檔案,理論上可以搜尋任何型別的資料。只要先把資料轉化為文字,就可以對資料進行索引和搜尋。使用了反向索引的機制,維護乙個詞 短語的表,對於每個詞和短語都有乙個鍊錶描述有哪些文件包含這個詞和短語。這樣使用者輸入查詢條件的時候,搜尋引擎先對輸入的條件分詞,分成詞和短語,然...