solr中文搜尋倒排索引和資料儲存結構

2021-09-02 15:09:43 字數 1087 閱讀 5667

傳統的方式(正排索引)是從關鍵點出發,然後再通過關鍵點找到關鍵點代表的資訊中能夠滿足搜尋條件的特定資訊,既通過key尋找value。而lucene的搜尋則是採用了倒排索引的方式,即通過value找key。而在中文全文搜尋中value就是我們要搜尋的單詞,存放所有單詞的地方叫詞典。key是文件標號列表(通過文件標號列表我們可以找到出現過要搜尋單詞value的文件)

正排索引從文件編號找詞:

倒排索引是從詞找文件編號:

當文件資料來臨時,solr會首先對文件資料進行分詞,建立索引庫和文件資料庫。所謂的分詞是指:將一段字元文字按照一定的規則分成若干個單詞。如下面兩篇文件通過solr後如何產生分詞儲存:

文章中的標點符號可以直接過濾掉,像and、too可以直接過濾掉。形成的分詞表表示:

lucene的倒排索引儲存結構為:

詞項的字串+詞項的文件頻率+記錄詞項的頻率資訊+記錄詞項的位置資訊+跳躍偏移量。簡單的理解可以形成以下結構:

分別表示詞,詞出現的文件編號,文件中出現的頻率和文件中出現的位置。這樣當我們對詞進行搜尋時,會找到該詞出現過的所有文件的id,然後再通過該文件的id尋找文件的具體內容。

當然,lucene詞典中詞的順序是按照英文本母的順序排列的,這樣就可以採用壓縮儲存:假設有term,termagancy,termagant,termina四個詞。每個字母需要1byte的空間,常規儲存一共需要35byte。而壓縮儲存之後為:"term4agancy8t4inal",一共需要22byte,節省大量的空間。

mysql全文索引中文搜尋

由於mysql的預設配置是索引的詞的長度是4,所以需要修改mysql的配置檔案my.cnf 在 mysqld 位置內加入 ft min word len 2 其它屬性還有 ft wordlist charset gbk ft wordlist file home mysql wordlist gbk...

中文搜尋引擎研究

1.為什麼需要搜尋引擎?什麼叫搜尋引擎呢?internet是乙個巨大的資訊資源寶庫,幾乎所有的internet使用者都希望寶庫中的資源越來越豐富,使之應有盡有。每天都有新的主機被連線到internet上,每天都有新的資訊資源被增加到internet中,使internet中的資訊以驚人的速度增長。然而...

相關文章 中文搜尋引擎

1.為什麼需要搜尋引擎?什麼叫搜尋引擎呢?internet是乙個巨大的資訊資源寶庫,幾乎所有的internet使用者都希望寶庫中的資源越來越豐富,使之應有盡有。每天都有新的主機被連線到internet上,每天都有新的資訊資源被增加到internet中,使internet中的資訊以驚人的速度增長。然而...