亚洲人成网站在线播放2019 _日韩国产欧美精品_久久夜色精品国产欧美乱_在线视频福利一区

當(dāng)前位置:首頁 > 網(wǎng)站舊欄目 > 學(xué)習(xí)園地 > 設(shè)計(jì)軟件教程 > Lucene Hack之通過縮小搜索結(jié)果集來提升性能 (1)

Lucene Hack之通過縮小搜索結(jié)果集來提升性能 (1)
2010-01-13 23:05:21  作者:  來源:
一、緣起
Lucene在索引文件上G之后的搜索性能下降很嚴(yán)重,隨便跑個(gè)搜索就要上0.x秒。如果是單線程搜索那么性能尚可,總可以在0.x秒返回結(jié)果,如果是Web式的多線程訪問,由于Lucene的內(nèi)部機(jī)制導(dǎo)致數(shù)據(jù)被大量載入內(nèi)存,用完后立即丟棄,隨之引起JVM頻繁GC,性能極其低下,1-10秒的長連接比比皆是。這也是世人為之詬病的Lucene應(yīng)用瓶頸問題,那么是否有解決方法呢?

二、思路
我們來觀察Google, Baidu的搜索,有一個(gè)總體的感覺就是搜索結(jié)果多的關(guān)鍵詞耗時(shí)比較少,結(jié)果少的關(guān)鍵詞耗時(shí)反而多,且結(jié)果多的時(shí)候會說“約******個(gè)結(jié)果”。隱士猜測Google, Baidu的算法是找到前n個(gè)結(jié)果后停止掃描索引,根據(jù)前n個(gè)結(jié)果來推斷總共有多少個(gè)結(jié)果,此猜想可由Google, Baidu翻頁限制而得到部分驗(yàn)證。
再看Lucene,其Hits.length()返回的總是精確的結(jié)果,如果可以讓Lucene也返回模糊的結(jié)果,那么索引文件就算是10G也可以輕松應(yīng)對了。

三、探索
隱士帶著這個(gè)問題訪名山、覓高人,可惜沒有找到前人的成果,可能是隱士走的路不夠勤,如有類似的解決方案,隱士不吝賜教。
無奈之下,隱士詳細(xì)研究了Lucene 2.1.0源碼,準(zhǔn)備重新發(fā)明輪子。
一般來說大多數(shù)搜索應(yīng)用中的Query都會落在BooleanQuery上,隱士就拿它開刀。一路看來,BooleanScorer2里的一個(gè)method吸引了隱士,代碼如下:

Java代碼 復(fù)制代碼
  1. public void score(HitCollector hc) throws IOException {   
  2.   if (countingSumScorer == null) {   
  3.     initCountingSumScorer();   
  4.   }   
  5.   while (countingSumScorer.next()) {   
  6.     hc.collect(countingSumScorer.doc(), score());   
  7.   }   
  8. }  


在while循環(huán)里嵌入寫日志代碼可證結(jié)果集有多大,此處就循環(huán)了多少次。countingSumScorer.next()的意思是找到下一個(gè)符合boolean規(guī)則的document,找到后放入HitCollector,這HitCollector后面會換個(gè)馬甲放在大家熟悉的Hits里面。
如果可以在這個(gè)while循環(huán)里嵌一個(gè)break,到一定數(shù)量就break出來,性能提升將相當(dāng)明顯。這個(gè)代碼相當(dāng)簡單,果然大幅提高了性能,帶來的副作用是結(jié)果不太準(zhǔn),這個(gè)可以通過調(diào)整業(yè)務(wù)模型、邏輯來修正。畢竟這是一條提升Lucene性能的有效方法。
細(xì)細(xì)想來,正是由于這個(gè)break會導(dǎo)致結(jié)果集大的關(guān)鍵詞提前出來,搜索時(shí)間少,結(jié)果集小的關(guān)鍵詞不可避免會走完整個(gè)索引,相應(yīng)的搜索時(shí)間會長一點(diǎn)。

四、效果
由于具體嵌入代碼的過程極其繁瑣,隱士將在第二回詳細(xì)講解。這第一回先來個(gè)Big picture。
歷盡千辛萬苦,隱士終于搞定了這套程序,效果可以從隱士做的視頻搜索http://so.mdbchina.com/video/%E7%BE%8E%E5%A5%B3看出。
這個(gè)關(guān)鍵詞“美女”可以找到18萬個(gè)視頻,平均0.5秒返回結(jié)果,現(xiàn)在用上了新算法,只要0.06x秒返回結(jié)果,而且返回結(jié)果足夠好了,估算的8.5萬個(gè)結(jié)果雖然離18萬有很大差距,不過由于是估算的,差2-3倍應(yīng)屬可以接受的。
由算法的特性可知,while里面的hc.collect總可以在常量時(shí)間內(nèi)完成,循環(huán)次數(shù)又是<=常量,該算法的時(shí)間復(fù)雜度只和BooleanQuery的復(fù)雜程度相關(guān),和索引文件大小以及命中的Document在索引文件內(nèi)的分布密度沒有關(guān)系,因?yàn)锽ooleanQuery的復(fù)雜程度決定了countingSumScorer.next()需要經(jīng)過多少次判斷、多少次讀取索引文件,countingSumScorer.next()正是整個(gè)算法中耗時(shí)不定的部分。
現(xiàn)在這個(gè)視頻搜索的索引文件接近3G,熱門關(guān)鍵詞可以在0.0x秒返回結(jié)果,隱士相信即使以后索引文件上到10G,依然可以在0.0x秒返回結(jié)果。

(注:這個(gè)視頻搜索實(shí)際使用效果會打折扣,因?yàn)楹笈_索引也在這臺機(jī)器上,以后會分服務(wù)器,現(xiàn)在暫時(shí)在一起。)

安徽新華電腦學(xué)校專業(yè)職業(yè)規(guī)劃師為你提供更多幫助【在線咨詢
亚洲人成网站在线播放2019 _日韩国产欧美精品_久久夜色精品国产欧美乱_在线视频福利一区
不卡中文字幕av| 日本不卡一区二区三区四区| www.欧美黄色| 国产自产女人91一区在线观看| 欧美综合国产精品久久丁香| 日韩精品久久久| 日韩一二三区不卡在线视频| 日本精品视频在线| 欧美一区三区二区在线观看| 青青草成人网| 内射国产内射夫妻免费频道| 免费看成人午夜电影| 国产亚洲欧美一区二区三区| 国产伦理一区二区三区| 国产精品自拍合集| 91九色对白| 精品国产欧美一区二区三区成人| 国产精品久久久久久久乖乖| 久久久久国产精品一区| 欧美一级片中文字幕| 欧美精品色婷婷五月综合| 国产无套粉嫩白浆内谢的出处| 成人中文字幕av| 国产成人精品免费看在线播放| www.99久久热国产日韩欧美.com| 国产精品免费观看在线| 一本—道久久a久久精品蜜桃| 日韩尤物视频 | 国产精品免费一区二区三区 | 国产欧美精品va在线观看| 草b视频在线观看| 国产激情久久久| 国产精品视频一二三四区| 中国丰满熟妇xxxx性| 日韩精品一区二区三区久久| 国产一区二区丝袜| 久久男人的天堂| 国产精品果冻传媒潘| 亚洲精品免费在线看| 日韩欧美亚洲区| 国产欧美在线观看| 日韩在线欧美在线国产在线| 精品久久精品久久| 日本不卡一二三区| 国产免费一区二区三区香蕉精| 久久人人爽人人爽人人片av高请| 国产精品流白浆视频| 午夜久久资源| 麻豆91蜜桃| 久久久久免费精品| 亚洲一区二区三区色| 国产在线青青草| 久久精品ww人人做人人爽| 欧美激情区在线播放| 人人爽久久涩噜噜噜网站| 国产免费黄视频| 国产精品日韩欧美| 日本欧洲国产一区二区| 成人a级免费视频| 国产精品福利观看| 日本精品久久久久中文字幕| 国产剧情久久久久久| 国产精品日韩一区二区| 日韩毛片在线免费看| 久久久在线观看| 一区二区三区的久久的视频| 国产一区二区不卡视频在线观看| 国产精品无av码在线观看| 色噜噜一区二区| 逼特逼视频在线| 中文字幕乱码一区二区三区| 国产日韩欧美自拍| 国产精品久久久久久久久久小说| 日本999视频| 久久久久中文字幕| 日本久久久久久久久久久| 国产精品91久久久| 亚洲国产一区二区三区在线 | 久久综合毛片| 亚洲精品一区二区三区樱花| 成人免费在线小视频| 国产精品成熟老女人| 欧美高清中文字幕| 久久久国产精品x99av| 欧美中日韩在线| 菠萝蜜影院一区二区免费| 欧美中在线观看| 日韩在线播放一区| 欧美视频第三页| 国产精品涩涩涩视频网站| 极品日韩久久| 久久亚洲精品国产亚洲老地址| 精品一区久久久久久| 欧美成人免费一级人片100| 国产人妻互换一区二区| 久久国产精品久久国产精品| 国产精品一区二区久久久久| 在线观看免费91| 91精品国产高清自在线| 日韩av电影在线网| 久久久精品欧美| 精品一区二区三区自拍图片区| 国产精品成人品| 国产伦精品一区二区三区视频孕妇 | 亚洲综合五月天| 国产精品揄拍一区二区| 久久亚洲精品一区| 国产精品综合久久久| 亚洲精品天堂成人片av在线播放| 国产精品av免费在线观看| 日韩国产一区久久| 国产精品国产自产拍高清av水多| 国产欧美日韩一区二区三区| 亚洲一区精品视频| 久久免费高清视频| 欧美激情视频一区二区三区| 久久亚洲影音av资源网| 99精品在线直播| 日本精品福利视频| 国产精品久久久久久久久久东京| 国产麻豆电影在线观看| 亚洲一区二区三区精品视频| 久久久久久久有限公司| 美女精品国产| 亚洲a成v人在线观看| 国产成人精品在线视频| 国产美女精品在线观看| 欧美一级视频免费在线观看| 国产精品女人久久久久久| 波多野结衣久草一区| 欧美日韩国产精品激情在线播放| 久久国产精品影视| 久久久久久久久久久免费| 国产伦精品一区二区三区视频免费| 性高湖久久久久久久久aaaaa| 国产精品久久久| 99久久综合狠狠综合久久止 | 91超碰中文字幕久久精品| 欧美在线亚洲一区| 在线视频不卡一区二区| 久久久久亚洲精品| 成人av在线亚洲| 欧美亚洲丝袜| 亚洲砖区区免费| 国产精品久久亚洲7777| 久久另类ts人妖一区二区| 国产拍精品一二三| 欧美一级大片视频| 亚洲va码欧洲m码| 精品国产三级a∨在线| 国产成人精品免高潮在线观看| 国产一区二区久久久| 欧美亚州一区二区三区| 熟女少妇在线视频播放| 一区二区精品在线| 久久亚洲国产精品成人av秋霞| 久久久久久久久久av| www黄色日本| 国产午夜大地久久| 激情五月宗合网| 日本不卡二区| 欧美一乱一性一交一视频| 在线不卡日本| 国产精品美女免费| 久久久久久中文| 久久久免费精品| 国产精品99一区| 成人毛片一区二区| 国产视频999| 麻豆一区区三区四区产品精品蜜桃| 欧美有码在线观看视频| 日韩视频精品| 日本精品视频网站| 日本一区二区三区视频在线播放| 亚洲一区二区久久久久久久| 欧美激情一区二区久久久| 精品国产区在线| 久久中文字幕一区| 日韩中文字幕久久| 久久精品国产99国产精品澳门| 久久久久久久999| 久久久久久久免费视频| 日韩在线精品视频| 日韩亚洲欧美成人| 久久精品国产亚洲精品| 久久久精品美女| 久久精品视频亚洲| 久久精品国产96久久久香蕉| www.日韩av.com| 国产精品三区在线| 国产精品欧美亚洲777777| 国产精品第二页| 九九精品在线播放| 国产精品欧美一区二区| 欧美精品制服第一页| 伊人久久大香线蕉成人综合网| 亚洲色图自拍| 少妇久久久久久被弄到高潮| 日韩免费高清在线观看| 黄网站欧美内射|