lucene使用教程2 索引技術

2021-09-01 09:55:07 字數 1807 閱讀 7627

我們需要對文件進行預處理,建立一種便於檢索的資料結構,以此來提高資訊檢索的速度,這種資料結構就是索引。目前廣泛使用的一種索引方式是倒排序索引。()

倒排序索引的原理就如同查字典。要先查目錄,得到資料對應的頁碼,在直接翻到指定的頁碼。不是在文章中找詞,而是從目錄中找詞所在的文章。這需要在索引庫中生成乙個詞彙表(目錄),在詞彙表中的每乙個條記錄都是類似於「詞à所在文件的編號列表」的結構,記錄了每乙個出現過的單詞,和單詞出現的地方(哪些文件)。查詢時先查詞彙表,得到文件的編號,再直接取出相應的文件。

索引檔案的檢索與維護,更新是先刪除後建立

建立索引的執行過程(store、index)

在建立索引時,先要把文件存到索引庫中,還要更新詞彙表

我們做的操作:

1、把資料物件轉成相應的document,其中的屬性轉為field。

2、呼叫工具indexwriter的adddocument(doc),把document新增到索引庫中。

lucene做的操作:

1、把文件存到索引庫中,並自動指定乙個內部編號,用來唯一標識這條資料。內部編號類似於這條資料的位址,在索引庫內部的資料進行調整後,這個編號就可能會改變,同時詞彙表中引用的編號也會做相應改變,以保證正確。但我們如果在外面引用了這個編號,前後兩次去取,得到的可能不是同乙個文件!所以內部編號最好只在內部用。

2、更新詞彙表。把文字中的詞找出並放到詞彙表中,建立與文件的對應關係。要把哪些詞放到詞彙表中呢,也就是文字中包含哪些詞呢?這就用到了乙個叫做analyzer(分詞器)的工具。他的作用是把一段文字中的詞按規則取出所包含的所有詞。對應的是analyzer類,這是乙個抽象類,切分詞的具體規則是由子類實現的,所以對於不同的語言(規則),要用不同的分詞器

newfield(

"title"

, article.gettitle(),store.

yes, index.

analyzed))。

第三與第四個引數的意思為:

列舉型別

列舉常量

說明store

no不儲存屬性的值

yes儲存屬性的值

index

no不建立索引

analyzed

分詞後建立索引

not_analyzed

不分詞,把整個內容作為乙個詞建立索引

說明:store是影響搜尋出的結果中是否有指定屬性的原始內容。index是影響是否可以從這個屬性中查詢(no),或是查詢時可以查其中的某些詞(analyzed),還是要把整個內容作為乙個詞進行查詢(not_analyzed)。

從索引庫中搜尋的執行過程(queryparser、topdocs、scoredoc)

1、把要查詢字串轉為query物件。這就像在hibernate中使用hql查詢時,也要先呼叫session.createquery(hql)轉成hibernate的query物件一樣。把查詢字串轉換成query是使用queryparser,或使用multifieldqueryparser。查詢字串也要先經過analyzer(分詞器)。要求搜尋時使用的analyzer要與建立索引時使用的analzyer要一致,否則可能搜不出正確的結果。

2、用indexsearcher.search(),進行查詢,得到結果。此方法返回值為topdocs,是包含結果的多個資訊的乙個物件。其中有totalhits 代表決記錄數,scoredoc的陣列。scoredoc是代表乙個結果的相關度得分與文件編號等資訊的物件。

3、取出要用到的資料列表。呼叫indexsearcher.doc(scoredoc.doc)以取出指定編號對應的document資料。

lucene 索引技術

一 lucene索引建立和優化 版本2.9.0以上 lucene索引的建立首先需要取得幾個必須的物件 1 分詞器 可以採用其他的中文分詞器 standardanalyzer analyzer new standardanalyzer version.lucene current 分詞器 2 luce...

Faiss教程 索引 2

所有的函式都是深複製,我們不需要關心物件關係。i o函式 複製函式 index factory通過字串來建立索引,字串包括三部分 預處理 倒排 編碼。預處理支援 倒排支援 編碼支援 如 index index factory 128,opq16 64,imi2x8,pq8 16 處理128維的向量,...

lucene使用教程3 常用類的物件

你需要以下類來執行這個簡單的索引與搜尋的過程 1 indexwriter 2 indexsearcher 3 indexreader 4 directory 5 analyzer 6 document 7 field 8 term 9 query 10 termquery 11 hits 接下來是對...