以前曾經(jīng)提到過搜索引擎的緩存策略, 根據(jù)搜索引擎搜索的關(guān)鍵詞的統(tǒng)計(jì)分布, 可以優(yōu)化設(shè)計(jì)搜索引擎的緩存策略. 就普通的緩存策略上講, 緩存是因?yàn)樵谝欢ǖ臅r(shí)間段內(nèi)的搜索的關(guān)鍵詞集中在一定的范圍內(nèi), 并且這些搜索相對(duì)穩(wěn)定. 例如每天搜索"美女"的人總有10萬,20萬, 而結(jié)果在這段時(shí)間相對(duì)穩(wěn)定, 因此沒有必要每次去檢索索引文件, 而將上一個(gè)人搜索的結(jié)果直接返回便可以了.
搜索引擎緩存策略也同搜索引擎的算法密切相連, 除了搜索緩存, 索引緩存也是一個(gè)好方法. 獨(dú)立或者分布一些權(quán)重較高的文檔也是一種提高效率的方法. 例如我們有1000萬的網(wǎng)頁的權(quán)重(可以簡單的理解為pagerank)比較高, 那么這些網(wǎng)頁的排序相比另外一些權(quán)重較低的網(wǎng)頁相對(duì)較為穩(wěn)定, 就不妨獨(dú)立出來進(jìn)行相對(duì)獨(dú)立的索引緩存.
關(guān)于緩存的分布, 一般的小型搜索引擎不會(huì)用到, 但是如果每天處理上億次的搜索, 緩存的分布就應(yīng)當(dāng)有一定的分布規(guī)劃, 例如根據(jù)提交的關(guān)鍵詞構(gòu)成hash table, 然后對(duì)應(yīng)于不同的搜索服務(wù)器, 實(shí)現(xiàn)緩存的分布.
讓我們看看實(shí)際例子吧, 我們拿百度, google, yisou, 中搜, tag.bokee.com 進(jìn)行簡單的測(cè)試:
因?yàn)闇y(cè)試, 要搜索一些在過去7天沒有人搜索過的關(guān)鍵詞, 或者組合詞. 為了保證沒有人搜索過, 我選擇在各個(gè)搜索引擎里搜索"a s d f v g h" , 這是我在鍵盤上隨機(jī)打出的一些組合, 相信這世界上在7天沒有人相同搜索, 這樣保證我的第一次的搜索是 fresh search, 就是一定需要搜索引擎去檢索索引文件, 而不是通過緩存策略.
以下是結(jié)果:
百度: 0.279秒
google: 0.24 秒
一搜: 0.24 秒
中搜: 0.001秒(無結(jié)果!!!!)
博客搜索: 0.041 秒
下面是第二次搜索的結(jié)果:
百度: 0.001秒
google: 0.05 秒
一搜: 0.09 秒
中搜: 0.002秒(無結(jié)果!!!!)
博客搜索: 0.019 秒
經(jīng)過簡單的測(cè)試, 可以看出緩存機(jī)制只有在Baidu和google搜索引擎里都有, 但是各自效率不一樣, 如下是簡單的比例:
百度: 100
google: 5
一搜: 沒有明顯的緩存
中搜: 沒有明顯的緩存
博客搜索: 沒有明顯的緩存
而在緩存效率上百度要遠(yuǎn)遠(yuǎn)大于google, 這點(diǎn)大概是因?yàn)間oogle的gfs本身的分布效率已經(jīng)相當(dāng)不錯(cuò), 因此進(jìn)行緩存也不會(huì)有數(shù)量級(jí)的提升.
而百度, 根據(jù)測(cè)試可能是集中方式的數(shù)據(jù)存儲(chǔ), 但是根據(jù)搜索進(jìn)行hash分布, 因此才會(huì)在緩存上有顯著的提升. (這個(gè)屬于猜測(cè))
搜索記錄在以下位置:
http://www.wespoke.com/archives/download/se-buffer/baidu1.png
http://www.wespoke.com/archives/download/se-buffer/baidu2.png
http://www.wespoke.com/archives/download/se-buffer/google1.png
http://www.wespoke.com/archives/download/se-buffer/google2.png
http://www.wespoke.com/archives/download/se-buffer/tag1.png
http://www.wespoke.com/archives/download/se-buffer/tag2.png
http://www.wespoke.com/archives/download/se-buffer/yisou1.png
http://www.wespoke.com/archives/download/se-buffer/yisou2.png
http://www.wespoke.com/archives/download/se-buffer/zhongsou1.png
http://www.wespoke.com/archives/download/se-buffer/zhongsou2.png