搜尋引擎 知識梳理

2021-07-02 14:38:35 字數 2050 閱讀 1430

按照詞被搜尋的頻率進行排序

(例子:漢字提示的功能,從user log中提取出每天搜尋頻率最高的詞,和這些詞命中的搜尋結果數,更新到伺服器中,然後提供補全提示功能。資料每天凌晨增量更新一次,保證資料的實時性。

使用者輸入,使用者每次按下鍵盤,觸發js的keydown事件,傳送乙個請求到cgi,cgi將使用者輸入的內容送到suggestsvr,suggestsvr分解使用者輸入串,根據編碼去樹中查詢,最後將結果壓入優先順序佇列中,返回搜尋頻率最高的前10個結果給使用者,值得一提的是,我們對返回結果的使用者的keyword做了分詞處理,以保證使用者的搜尋結果更加豐富

增加對拼音的支援,準備漢字到拼音對映表。存在的挑戰:

1.一字多音,例如阿,可以讀a,可以讀e,這就導致在二維陣列中,對「阿」查詢拼音的時候比較麻煩,這裡的做法是根據頻率選擇乙個搜尋頻率比較高的

2.同音短語,比如:手機和收集,對應的拼音都是"shou'ji",這種情況處理起來比較簡單,在上面的node結構中,有乙個docinfo *pdocinfo,以陣列的方式記錄了拼音對應的所有同音短語

3.簡拼,比如:sj,對應的可能是"手機",「收集」,「四級"........這種情況,在上面的node結構中,有乙個ctag=-2標識聲母,通過這種方式,可以很好的處理簡拼

4.混拼,比如:nuojy,對應的是「諾基亞」,混拼的處理方式和簡拼的方式比較類似

)搜尋「嬰兒「,標題中含有「寶寶」的也可以出來

搜尋「一」,標題中含有「1」的也可以出來

搜尋「諾積壓「,提示使用者是否需要搜尋」諾基亞「

同音判斷

搜尋」marcbook」,提示使用者是否需要搜尋「macbook」

步長判斷

為什麼需要分布式

減低資料壓力,便於並行處理

如何分布

資料切分方式

如何擴容

針對部分節點擴容,不需要每次都用翻倍的方式擴容

資料量不斷增大,索引檔案變大

增量切換的時間增長,切換的風險增加

增量索引和全量索引的合併

實時搜尋引擎

差分儲存

{1,4,7,9}儲存為{1,3,3,2}

vint壓縮

每位元組的高位表示是否還有剩餘位元組

低七位表示數值

0~127使用乙個位元組表示

128:00000001 10000000

web: 使用tws伺服器,接受使用者請求,處理業務邏輯,渲染頁面,80%以上的產品需求集中在這裡

commserver:協議分發伺服器,將不同的請求傳送到不同的後台

cacheserver:快取伺服器,協議級cache,支援即時刪除,lru淘汰,有70%左右的命中率

unionserver:聚合伺服器,將分布式搜尋系統返回的檢索結果合併

searchkernel:檢索伺服器,負責處理搜尋請求

docserver:文件伺服器,負責儲存具體的文件資訊,返回完整的文件資訊給使用者

indexserver:索引伺服器,負責生成索引

transferserver:中轉伺服器,負責綜合排序,將**資料格式化為搜尋的標準資料格式

使用者傳送搜尋請求,web層對使用者的輸入條件進行過濾,進行同義詞、直達…處理,將處理後的請求傳送到commserver

cache收到請求後判斷是否命中,命中則返回,不命中則**給unionserver,同時cache儲存返回結果

unionserver收到請求後,負載均衡,分發給各個searchkernel並行檢索

searchkernel的處理流程  :

searchkernel收到使用者請求,解析出查詢串

針對查詢串進行分析,生成語法樹

對語法樹每個節點,進行分詞查詢倒排索引

對查詢出的多個倒排索引按照語法關係,進行邏輯運算

按照docid進行其他查詢條件的過濾

對docid進行排序

將docid返回給unionsvr

searchkernel檢索後,返回排好序的docid集合

union對各個後台返回的docid集合進行合併

union把合併後的結果集傳送到docsvr,獲取完整文件資訊,返回給cachesvr

搜尋引擎 索引

正排索引 文件編號,單詞編號,單詞的數量,單詞出現的位置。倒排索引 1,單詞詞典,儲存單詞以及統計資訊,單詞在記錄表中的便宜,可常駐記憶體,用雜湊表儲存。2,記錄表,單詞對應的文件集合,記錄單詞出現的數目 位置。文件採用差分變長編碼。其中文件可按編號公升序排列 可利用差分編碼 也可按出現次數排列,可...

MySQL搜尋引擎程式 mysql搜尋引擎

mysql是我們比較常用的一種資料庫軟體。它有著諸多的優點,如開源的,免費的等等。其實它還有乙個很好的特點,那就是有多種引擎可以供你選擇。如果賽車手能根據不同的路況,地形隨手更換與之最適宜的引擎,那麼他們將創造奇蹟。然而目前他們還做不到那樣便捷的更換引擎,但是我們卻可以 所謂知己知彼方可百戰不殆,要...

搜尋引擎基礎知識1 搜尋引擎的技術架構

搜尋引擎按其工作方式主要可分為三種 分別是全文搜尋引擎 full text search engine 目錄索引類搜尋引擎 search index directory 元搜尋引擎 meta search engine 全文搜尋引擎 雖然有搜尋功能,但嚴格意義上不能稱為真正的搜尋引擎,只是按目錄分類...