fst和skiplist

前言

1:爲什麼要講fst和skiplist

檢索的倒排結構通常包含兩種結構,一個是詞典(一般要加載到內存),一個是倒排表。如下圖

 

一次查詢需要經歷兩個階段,找到詞典的位置(或者叫判斷這個詞存不存在),比如輸入Lucene,先要找到這個詞存在的位置。詞典的存儲結構就有兩種實現方式,fst或跳錶。Lucene3.0之前使用的是跳躍表結構,後換成了FST,但跳躍表在Lucene其他地方還有應用如倒排表合併和文檔號索引。@hxx  跳躍表加速合併,因爲布爾查詢時,and 和or 操作都需要合併倒排表,這時就需要快速定位相同文檔號,所以利用跳躍表來進行相同文檔號查找

2:兩者在Lucene中各佔據什麼位置?關係是怎樣的

都是或者曾經是詞典數據結果的實現方式,現在各自在Lucene中佔據一席之地。沒有啥關係,看優缺點吧!

skiplist優點:結構簡單、跳躍間隔、級數可控,Lucene3.0之前使用的也是跳躍表結構,後換成了FST,但跳躍表在Lucene其他地方還有應用如倒排表合併和文檔號索引。 skiplist 缺點:模糊查詢支持不好

skiplist優點:內存佔用率低,壓縮率一般在3倍~20倍之間、模糊查詢支持好、查詢快 skiplist缺點:結構複雜、輸入要求有序、更新不易

 

3:一個合格的詞典結構要求有: 

  1. 查詢速度。 

  2. 內存佔用。 

  3. 內存+磁盤結合。 

 

4:漢字怎麼前綴

使用的是Unicode編碼,如下

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章