Lucene01 全文索引

2021-08-31 22:52:36 字數 1425 閱讀 2288

一:全文檢索

在文字檢索裡,全文索引是一種搜尋單個計算機儲存的文件(

computer

-stored 

document

)或從乙個全文資料庫(

full text database

)裡搜尋集合的技術。全文索引與基於元資料的搜尋以及資料庫表示的原始文字的一部分(例如 標題 摘要 已選定部分或者是參考文獻)。(參考

)我們生活中的資料總體分為兩種:結構化資料和非結構化資料。

結構化資料:指具有固定格式或有限長度的資料,如資料庫,元資料等。

非結構化資料:指不定長或無固定格式的資料,如郵件,word文件等。

當然有的地方還會提到第三種,半結構化資料,如xml,html 等,當根據需要可按結構化資料來處理,也可抽取出純文字按非結構化資料來處理。非結構化資料又一種叫法叫全文資料。

按照資料的分類,搜尋也分為兩種:

對結構化資料的搜尋:如對資料庫的搜尋,用sql語句。再如對元資料的搜尋,如利用windows 搜尋對檔名,型別,修改時間進行搜尋等。

這種說法比較抽象,舉幾個例子就很容易明白,比如字典,字典的拼音表和部首檢字表就相當於字典的索引,對每乙個字的解釋是非結構化的,如果字典沒有音節表和部首檢字表,在茫茫辭海中找乙個字只能順序掃瞄。然而字的某些資訊可以提取出來進行結構化處理,比如讀音,就比較結構化,分聲母和韻母,分別只有幾種可以一一枚舉,於是將讀音拿出來按一定的順序排列,每一項讀音都指向此字的詳細解釋的頁數。我們搜尋時按結構化的拼音搜到讀音,然後按其指向的頁數,便可找到我們的非結構化資料——也即對字的解釋。這種先建立索引,再對索引進行搜尋的過程就叫全文檢索(full-text search)。

對上述索引搜尋的總結:

1. 索引過程:

1) 有一系列被索引檔案

2) 被索引檔案經過語法分析和語言處理形成一系列詞(term)。

3) 經過索引建立形成詞典和反向索引表。

4) 通過索引儲存將索引寫入硬碟。

2. 搜尋過程:

a) 使用者輸入查詢語句。

b) 對查詢語句經過語法分析和語言分析得到一系列詞(term)。

c) 通過語法分析得到乙個查詢樹。

d) 通過索引儲存將索引讀入到記憶體。

e) 利用查詢樹搜尋索引,從而得到每個詞(term)的文件鍊錶,對文件鍊錶進行交,差,並得

到結果文件。

f) 將搜尋到的結果文件對查詢的相關性進行排序。

g) 返回查詢結果給使用者。 

全文索引(三)lucene 分詞 Analyzer

分詞 將reader通過閱讀物件analyzer字處理,得到tokenstream處理流程被稱為分割。該解釋可能是太晦澀。檢視示例,這個東西是什麼感性的認識。樣品 一段文字 this is jack s house 經過分詞器處理之後得到可能為jack house。這個過程中 this is 稱之為...

mysql全文索引的坑 MySQL全文索引問題

我有乙個包含以下資料的 文章 mysql select from articles id title body 1 mysql tutorial dbms stands for database 2 how to use mysql well after you went through a 3 o...

基於JAVA的全文索引引擎Lucene簡介 中

安裝和使用 lucene的組成結構 對於外部應用來說索引模組 index 和檢索模組 search 是主要的外部應用入口 org.apache.lucene.search 搜尋入口 org.apache.lucene.index 索引入口 org.apache.lucene.analysis 語言分...