Type ahead/Auto Complete 設(shè)計(jì)

分析一下QPS,日活躍度。

比較粗暴的方式:

我們會實(shí)時有一個log,來記錄所有單詞的出現(xiàn)頻率。然后用SQL抓取 TOP 多少的詞with a prefix


問題是Like 這種比較慢,是一種range query: >=...<=....

比較好的方法是用Trie.


如何做sharding? 所有數(shù)據(jù)存在一個機(jī)器上太多了。我們可以分幾個機(jī)器。并且使用consistent hashing的方法。這樣機(jī)器增多,還是會map到原本的key。比如"a" prefix全部去service 3, 'ad' prefix全部去service 1...



Reduce Log File。 每一個單詞我們count++ 只有當(dāng)random number chosen from 1--1000 且 為1的時候, 1/1000.對于那么沒幾次的數(shù)據(jù)就不存了。




基本對應(yīng)Leetcode search autocomplete這道題。

solution: https://leetcode.com/problems/design-search-autocomplete-system/solution/#approach-3-using-trieaccepted


暴力HashMap法:


Trie ?beat 90%



最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容