回覆列表
-
1 # 網路圈
-
2 # 成都朗沃教育
兩個方案:
一、如果訪問量大,非實時,可以透過分析訪問日誌,定時生成熱搜關鍵字插入表中。
二、如果要求實時,表設計三個欄位,一個原始搜尋關鍵字,一個搜尋次數weight,一個關鍵字hash後的比如md5後的32位字串,暫定欄位名:key,並對這個key建索引。每次使用者搜尋時,md5關鍵字得到key,先在memcache中透過key查詢,沒有則在資料庫中查詢key欄位,有則直接根據此key更新記錄的weight欄位加一。
現在很多網站都提供了站內搜尋功能,而搜尋功能附帶的另一個需求點就是“熱搜詞”,在所有的搜尋關鍵詞中統計高頻搜尋詞,每個熱搜詞代表的就是一個熱點。
對於開發者該如何開發熱搜詞功能呢?下面由淺到深向大家講解下。
熱搜詞如何確定?很多開發人員可能會說,實現這個功能不難,只要將使用者輸入的搜尋詞入庫,然後相同的搜尋詞進行+1統計即可。
聽起來似乎沒什麼問題,但是,我們不能保證使用者輸入的關鍵詞完完全全就是一個個獨立的詞彙!比如使用者A搜尋了“網站架構”,使用者B搜尋了“網站架構如何實現?”,按上面說的做法,那這2個搜尋詞是完全不同的搜尋詞,這會存在問題的,因為使用者搜尋意圖是同樣的,只是搜尋詞不同而己。
所以我們應該對使用者輸入的搜尋詞進行分詞處理,然後將分詞後的搜尋詞進行儲存統計。
熱搜詞功能實現思路現在來說下如實熱搜詞的思路。
1、長尾搜尋詞進行中文分詞處理
為確保搜尋質量,我們需要對使用者輸入的長尾搜尋詞進行中文分詞並提取,這樣做的好處就是能明確使用者搜尋意圖。
2、分詞結果存入快取
我們將分詞後的搜尋詞彙不要直接存入資料庫,當然了,如果這塊業務請求低,那可以直接入庫,如果併發大則需要存入快取中進行臨時儲存。
3、搜尋詞weight處理
每涉及一個搜尋詞後就進行weight+1操作,代表這個詞又被搜尋了一次。
4、對weight進行排序即可找到熱搜詞。
以上就是熱搜詞的實現思路,但在實際業務場景中我們還要考慮其它因素,比如統計特定時間段內的熱搜詞。