搜尋引擎開發經驗

來源:互聯網
上載者:User

一 查詢子系統
1)邏輯運算式
綜合的搜尋引擎通常支援邏輯與,邏輯或,邏輯非這三種操作.多個查詢詞的時候要進行邏輯操作,通常空格預設為&,如果在多個查詢結果前進行預排序,那麼就可以把原來複雜的邏輯操作轉為有序集合的合併作業,時間複雜度僅為O(m+n).

2)排序
a)文本排序
常值內容是最重要的依據,而常值內容在詞彙的集合,因此排序主要考慮到文本詞彙的權重,涉及到的因素有:查詢詞的鄰近關係,命中位置(包括標題,META關鍵詞,還是本文),單篇文檔中的命中頻率.

b)網頁排序
網頁與文本的不同,是增加了meta元素和各種連結資訊。因此網頁的權重由三部分組成。
網頁權重= 文本詞彙的基本權重 + 連結權重 + 查詢使用者行為的加權
連結權重(url)主要考慮網頁入度(對外連結數),鏡像,目錄深度。
經典例子是google的pagerank.

3)分散式查詢
可以由一個模組向多個節點發出請求,然後對各個節點返回的結果進行合并,排序.這種情況應用在不相交資料集是能降低節點開銷,提高節點容錯性的.但要保證每一個文檔的全部索引項目在同一個節點上.

4)檢索的IO瓶頸
通過倒排索引得到文檔位置去取內容時,或者很大的倒排索引檔案,通過二級索引讀取索引詞對應的倒排資料時,IO都是檢索最佳化的重點.特別使用OS提供的底層檔案提供者read/write效率較好,此外使用記憶體檔案對應等其它機制可以大大提高IO訪問的效率.

5)緩衝
緩衝技術的原理是建在被緩衝對象訪問中存在的局部性特性上的.
緩衝包括查詢結果緩衝和倒排檔案快取.
因為硬碟IO一次讀取通常比記憶體一次讀取慢幾十倍甚至百倍;
查詢快取的效率為原來的所需要時間的倍數: =1-p(p為命中率)
查詢策略:LRU > LPU > FIFO

二 索引子系統
1)全文索引之倒排索引
倒排檔案(inverted file)實質上是描述一個詞項集合(terms)元素和一個文檔集合(docs)元素對應關係的資料結構.

2)其它索引檔案
記錄儲存: 使用改進後的ISAM檔案,以塊來標識儲存需要的空間,設定每個檔案的最大長度,在檔案尾標識上當前已經使用了的塊數,檔案內容用二進位儲存,位移量記錄為自己使用的塊數(記錄長度)+檔案已經使用了的塊數(記錄在檔案的位移位置).這種儲存方式便於修改內容變化不是特別大的記錄,特別適用於記錄沒有過分增長.

索引檔案: KEY--VALUE,如果是一對一,則使用類似STL中的MAP資料結構;如果是一對多,則使用MULTIMAP資料結構.有時為了快速查詢,還用於HASH結構進行儲存,以達到查詢0(1)的最佳效率.

3)混合索引

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.