高效分布式索引

檢索系統的高效分布式索引子系統具有低膨脹率、高度并發、高度可擴展等特征,由文本預處理、索引創建、索引更新、索引刪除四個功能模塊。

文本預處理

為了降低有效文本的大小,有效利用存儲空間,優化檢索效率,需要對待檢索文本進行預處理。待檢索文本中所含有的并不全部是中文,可能含有英文字符、其它外語字符、或者一些特殊的符號,針對這些特殊字符創建索引的過程以及檢索的策略與中文字符不同。針對待檢索文本創建索引時需要將這些特殊的字符分離出來,分別對其進行索引的創建。

除了將其它的特殊字符,外文字符分離出來,在索引的創建時還有一個很重要的問題,即停止詞 (stop word)的處理,這些詞并沒有實際的意義,但是在文本中卻大量的存在,比如中文字符中的 “的”,“是”,“得”等,英文中也有類似的詞 “and”,“is”還有動詞的過去式,過去分詞等。這些詞在文本中出現的概率很大,總量很多。但是其對實際的檢索意義不是很大,若要是對這些詞全部建立索引,將會耗費很多資源,所以在索引創建之前將這些停止詞移除。停止詞是根據已有的停用詞表進行設定。在具體處理時采用的策略是掃描文本時判斷該字符是否為停止詞,若是直接跳到下一個詞進行處理。

索引創建

通過讀取文檔的文本信息,按照系統索引的結構進行解析、存儲,方便查詢系統的使用。系統為檢索與索引服務器交互次數及內網網絡資源壓力使用批量模式創建索引。在索引創建過程中,會對待檢索文本先進行停用詞去除,檢索系統中IK分詞器,并且加入了豐富的詞典,如區域詞典、人物詞典、搜狗詞典等豐富的詞典,以保證分詞的準確性。

索引更新于刪除

書籍、章節、多媒體資源等更新或者刪除后,系統通過數據庫的資源的更新時間和刪除備份表的刪除時間對索引做到準實時更新。

索引壓縮

隨著數據的積累,我們不能以無限制的擴大內存空間,來提升搜索性能。我們可以最大限度的減小索引文件的大小,實現每次讀入到內存中有效的索引信息的增加。索引的創建的最終目的還是為了檢索效率的提高,但是我們知道一個文本的索引是遠遠大于該文本本身的大小,在信息檢索時,理想的情況是可以將整個索引文件放入內存中,提供各種的需要的信息檢索。但是這在實際情況中是不可能的,原因有兩個:

1) 索引文件太大,由于需要記錄每個文檔中每個字符的位置,以及該文檔的文檔號和鏈接指針的相關信息,導致索引文件比原來的文本集大很多。用膨脹率來表示源文本集的大小與索引文本大小的關系。

2) 由于內存相比硬盤其造價要高很多,在目前的情況下足夠大的內存空間還是不可能滿足的。

 

彩票应用