国产精品一区二区精品_久久小视频_天堂va在线观看_99久久夜色精品国产亚洲96_日本手机在线视频_av成人免费

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

Lucene Hack之通過縮小搜索結(jié)果集來提升性能 (1)
2010-01-13 23:05:21  作者:  來源:
一、緣起
Lucene在索引文件上G之后的搜索性能下降很嚴(yán)重,隨便跑個搜索就要上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的搜索,有一個總體的感覺就是搜索結(jié)果多的關(guān)鍵詞耗時比較少,結(jié)果少的關(guān)鍵詞耗時反而多,且結(jié)果多的時候會說“約******個結(jié)果”。隱士猜測Google, Baidu的算法是找到前n個結(jié)果后停止掃描索引,根據(jù)前n個結(jié)果來推斷總共有多少個結(jié)果,此猜想可由Google, Baidu翻頁限制而得到部分驗(yàn)證。
再看Lucene,其Hits.length()返回的總是精確的結(jié)果,如果可以讓Lucene也返回模糊的結(jié)果,那么索引文件就算是10G也可以輕松應(yīng)對了。

三、探索
隱士帶著這個問題訪名山、覓高人,可惜沒有找到前人的成果,可能是隱士走的路不夠勤,如有類似的解決方案,隱士不吝賜教。
無奈之下,隱士詳細(xì)研究了Lucene 2.1.0源碼,準(zhǔn)備重新發(fā)明輪子。
一般來說大多數(shù)搜索應(yīng)用中的Query都會落在BooleanQuery上,隱士就拿它開刀。一路看來,BooleanScorer2里的一個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()的意思是找到下一個符合boolean規(guī)則的document,找到后放入HitCollector,這HitCollector后面會換個馬甲放在大家熟悉的Hits里面。
如果可以在這個while循環(huán)里嵌一個break,到一定數(shù)量就break出來,性能提升將相當(dāng)明顯。這個代碼相當(dāng)簡單,果然大幅提高了性能,帶來的副作用是結(jié)果不太準(zhǔn),這個可以通過調(diào)整業(yè)務(wù)模型、邏輯來修正。畢竟這是一條提升Lucene性能的有效方法。
細(xì)細(xì)想來,正是由于這個break會導(dǎo)致結(jié)果集大的關(guān)鍵詞提前出來,搜索時間少,結(jié)果集小的關(guān)鍵詞不可避免會走完整個索引,相應(yīng)的搜索時間會長一點(diǎn)。

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

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

安徽新華電腦學(xué)校專業(yè)職業(yè)規(guī)劃師為你提供更多幫助【在線咨詢
国产精品一区二区精品_久久小视频_天堂va在线观看_99久久夜色精品国产亚洲96_日本手机在线视频_av成人免费
<button id="0mgmq"><pre id="0mgmq"></pre></button>
  • <tr id="0mgmq"></tr>
  • <abbr id="0mgmq"><source id="0mgmq"></source></abbr> <button id="0mgmq"></button>
  • 亚洲欧洲精品一区二区| 国产一区二区在线网站| 欧美va天堂在线| 午夜老司机精品| 日本在线观看不卡| 奇米精品在线| 亚洲最大色综合成人av| 亚洲一区在线直播| 欧美综合77777色婷婷| 亚洲福利精品| 午夜在线播放视频欧美| 91国产在线免费观看| 国产偷国产偷亚洲高清97cao| 国产精品区二区三区日本| www.久久久| 好看的日韩精品| 日韩欧美一区二区在线观看| 在线亚洲美日韩| 国产欧美日韩综合精品二区| 亚洲深夜福利| 国产色综合一区二区三区| 欧美日韩电影一区二区| 一区二区高清视频| 国产亚洲欧洲| 国产精品一区二区三区四区五区| 99国产高清| 日韩精品久久久免费观看| 午夜久久tv| 模特精品在线| 欧美日韩一区二区视频在线| 欧美日韩国产精品一卡| 欧美精选在线| 久久婷婷人人澡人人喊人人爽| 国语精品中文字幕| 美女精品国产| 亚洲日韩成人| 欧洲一区二区在线观看| 韩日精品在线| 久久99欧美| 精品1区2区3区4区| 久热re这里精品视频在线6| 久久99蜜桃综合影院免费观看| 欧美高清不卡| 国内精品二区| 影院欧美亚洲| 欧美日韩天天操| 国产偷久久久精品专区| 欧美一区二区三区在线免费观看| 在线观看视频免费一区二区三区| 精品一区二区三区免费毛片| 久久国产精品久久w女人spa| 免费看污久久久| 国产三级精品在线不卡| 久久另类ts人妖一区二区| 在线观看亚洲视频啊啊啊啊| 国产在线欧美日韩| 亚洲第一在线| 欧美日韩综合精品| 国产偷久久久精品专区| 亚洲午夜精品一区二区| 99理论电影网| 国产伦精品一区二区三区照片91| 古典武侠综合av第一页| 狠狠色综合网站久久久久久久| 国产一级特黄a大片99| 国产一区在线免费观看| 免费亚洲精品视频| 97免费高清电视剧观看| 国产精品sm| 日韩av一级大片| 国产免费一区二区| 亚洲精品免费在线看| 国产精品日韩欧美一区二区三区| 欧美日韩一区二区视频在线观看| 久久xxxx| 一区二区三区久久网| 亚洲日本欧美在线| 国模一区二区三区私拍视频| 亚洲免费在线| 亚洲午夜精品久久久久久浪潮| 日本在线观看一区二区| 成人精品一二区| 久热这里只精品99re8久 | 亚洲第一毛片| 日本在线视频不卡| 国产成人亚洲欧美| 91成人免费在线观看| 久久精品欧美| 欧美1区2区| 亚洲欧洲一区| 亚洲免费不卡| 男女精品网站| 好吊色欧美一区二区三区视频 | 亚洲午夜精品一区二区三区| 亚洲欧美精品| 一区在线播放| 亚洲综合丁香| 国产精品亚洲综合| 另类欧美小说| 欧美日韩一区综合| 国产精品久久久久久久久婷婷| 亚洲欧美成人| 激情视频在线观看一区二区三区| 欧美大陆一区二区| 欧美精品福利| 99热在线精品观看| 99视频网站| 日韩免费中文专区| 精品二区久久| 免费看亚洲片| 日韩高清国产一区在线观看| 在线视频一区观看| 亚洲激情一区二区三区| 国产二区一区| 一区二区三区四区欧美日韩| 亚洲欧洲日本一区二区三区| 国产精品久久久久久久久久久久冷| 欧美日韩天天操| 亚洲精美视频| 国产伦一区二区三区色一情| 在线视频不卡国产| 亚洲在线免费| 视频一区二区在线观看| 亚洲精品乱码久久久久久蜜桃91| 亚洲欧美日韩在线综合| 欧美亚洲另类久久综合| 亚洲欧洲视频| 品久久久久久久久久96高清| 日韩视频一区| 日韩电影免费观看在| 99精品视频网| 日韩视频在线观看国产| 国产精品亚洲综合久久| 日本一区二区视频| 亚洲欧美日韩在线观看a三区| 日韩欧美亚洲日产国产| 亚洲一区二区高清视频| 久久久久久艹| 国产欧美三级| 亚洲视频在线二区| 国产福利久久精品| 亚洲无玛一区| 视频一区二区在线观看| 99在线看视频| 亚洲东热激情| 欧美精品一区二区三区在线看午夜 | 亚洲区一区二区三区| 欧美婷婷久久| av一区二区在线看| 日韩一级精品| 中国一区二区三区| 精品午夜一区二区| 亚洲一区二区网站| 亚洲一二三区在线| 污视频在线免费观看一区二区三区 | 国产伦精品一区二区三区四区免费 | 免费一区二区三区在在线视频| 西西裸体人体做爰大胆久久久| 欧美一区成人| 日韩av大全| 久久精品中文字幕一区二区三区 | 在线播放一区| 欧美一区二区三区另类| 久久伦理网站| 国产麻豆日韩| 91传媒在线免费观看| 亚洲精品女人| 欧美久久一级| 一区二区三区四区五区精品| 久久精品美女| 久久国产精品 国产精品| 久久久久久久高潮| 国产日韩视频| 亚洲一区成人| 国产一区二区高清不卡| 亚洲精品一品区二品区三品区| 欧美一区二区三区四区在线观看地址| 久久一区二区三区av| 爱情岛论坛亚洲入口| 久久av免费一区| 亚洲女同在线| 久久最新视频| 国产精品.com| 国产伦精品一区二区三区| 成人av男人的天堂| 91嫩草免费看| 51国偷自产一区二区三区的来源 | 国产精品二区在线| 欧美黄在线观看| 国内自拍视频一区二区三区| 欧美区亚洲区| 亚洲先锋成人| 国产精品久久波多野结衣| 国产欧美日韩一区二区三区在线| 在线视频欧美一区| 男女精品网站| 国产一区二区精品在线| 欧美精品七区| 在线不卡视频一区二区| 国自产拍偷拍福利精品免费一|