lucene學習筆記2

2021-08-30 22:14:11 字數 2166 閱讀 8704

簡介

doug cutting 於2023年開始的專案 2023年9月後加入apache, lucene是doug cutting的middle name 。 目前lucene已經是apache的top

level的專案, 已經不在jakarta下面, 同時也有了python,perl,c++,.net, ruby(進行中)多個版本

1.lucene 主要的兩個任務:indexing and searching indexing主要使用的類 indexwriter 較核心的類,index檔案由它建立

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

3.analyzer 檔案的分析器(聽起來彆扭,還是叫analyzer好了)的抽象,這個類用來處理分詞(對中文尤其重要,轉換大小寫(computer->

computer,實現查詢大小寫無關),轉換詞根(computers->computer),消除stop words等,還負責把其他格式文件轉換為純文字等

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

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

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

7.型別 analyzed indexed stored 說明

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

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

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

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

field.text(string,reader) y y 如果是乙個reader, lucene猜測內容比較多,會採用unstored的策略.

8.searching主要使用的類 indexsearcher 以唯讀的方式訪問index(注意indexreader不是唯讀的),需要傳給他乙個query物件來搜尋

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

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

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

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

tips

13.lucene允許乙個index中的多個document可以為heterogeneous(異類) 也就是說,乙個document 有field (name,price), 下乙個document

可以有field(name,age),兩個document可以代表完全不同的記錄,不過這點我還沒有想到有什麼特別的用處

如果需要對field增加內容的, 可以使用doc.add(field.text("word",newword));如果doc中已經有word這個field, newword會被自動加入進去,

編號會重新計算 ,如果要刪除刪除index中的記錄,使用indexreader類完成, indexreader會先標記刪除,真實的刪除行為在indexreader關閉

時執行.也就是說indexreader也會修改index 通過indexreader.undeleteall()方法只能恢復同乙個indexreader例項標記刪除的記錄

沒有update方法,要更新記錄, 只能通過delete以後再add來進行, 如果要批量進行, 一次性delete完畢以後關閉reader再開啟writer來add的

效率較高

lucene學習筆記2 檢索

對已經建立好的索引庫進行檢索 功能詳細描述 param keyword 搜尋條件 param indexpath 索引路徑 throws ioexception throws parseexception see 類 類 方法 類 成員 public void search string keywo...

Lucene 學習筆記

調整索引索引效能 在乙個典型的索引應用中,程式效能的瓶頸存在於將索引檔案寫入磁碟的過程中。如果你曾經分析過索引過索引應用程式,應該會發現執行程式大部分時間都消耗在操作索引檔案的程式段上,因此我們必要使lucene索引新物件和修改索引檔案時變得更智慧型。當新的document物件新增到lucene的索...

lucene學習筆記

public class luceneadd catch exception e public class lucenesearch public static void main string args file indexdir new file d index try 在磁碟中檢索索引 dir...