Trie樹 實現搜尋引擎的搜尋關鍵詞提示功能

2021-10-04 17:23:11 字數 1037 閱讀 7919

快速查詢某個字串的功能。

比如,我們有6個字串,它們分別是:how,hi,her,hello,so,see。我們希望在裡面多次查詢某個字元是否存在。我們可以先對這6個字串做一下預處理,組織成trie樹的結構,之後每次查詢,都是在trie樹中進行匹配查詢。

trie樹的本質,就是利用字串之間的公共字首,將重複的字首合併在一起。

其中,根節點不包含任何資訊。每個節點表示乙個字串中的字元,從根節點到紅色節點的一條路徑表示乙個字串(注意:紅色節點並不都是葉子節點)。

trie樹構造的分解過程如下圖所示。

構造過程的每一步,都相當於往trie樹中插入乙個字串。當所有字串都插入完成之後,trie樹就構造好了。

當我們在trie樹中查詢乙個字串的時候,比如查詢字串「her」,那我們將要查詢的字串分割成單個的字元h,e,r,然後從trie樹的根節點開始匹配。如下圖所示,綠色的路徑就是trie樹中匹配的路徑。

構建好trie樹後,在其中查詢字串的時間複雜度是o(k),k表示要查詢的字串的長度。

如果用來構建trie樹的這一組字串中,字首重複的情況不是很多,那trie樹這種資料結構總體上來講是比較費記憶體的,屬於空間換時間的解決思路。

實際上,trie樹不適合精確匹配查詢,這種問題更適合用雜湊表或者紅黑樹來解決。trie樹比較適合的是查詢字首匹配的字串。

搜尋引擎 索引

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

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

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

搜尋引擎的實現原理

2006年11月15日 10 43 00 自由出版人2008 閱讀數 798 標籤 搜尋引擎 資料庫全文檢索 網路網際網路 伺服器 3 在索引資料庫中搜尋關鍵內容。當使用者輸入搜尋內容,單擊搜尋按鈕後,系統自定義的程式開始根據相關技術,分析使用者的搜尋內容,然後從網頁索引資料庫中,找到包含使用者搜尋...