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

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

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

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

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

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

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

安徽新華電腦學(xué)校專(zhuān)業(yè)職業(yè)規(guī)劃師為你提供更多幫助【在線(xiàn)咨詢(xún)
亚洲人成网站在线播放2019 _日韩国产欧美精品_久久夜色精品国产欧美乱_在线视频福利一区
狠狠噜天天噜日日噜| 国产精品国三级国产av| 久久综合亚洲精品| 久久国产精品一区二区三区四区| 国产精品美女在线| 少妇一晚三次一区二区三区| 国产免费内射又粗又爽密桃视频| 久久色在线播放| 人妻久久久一区二区三区| 国产高清在线不卡| 日韩一区国产在线观看| 99久久精品无码一区二区毛片| 欧美精品www在线观看| 国产一区深夜福利| 久久av资源网站| 国产一区二区视频在线观看| 国产精品久久久久9999爆乳| 欧美日韩一道本| 国产成人综合一区| 日韩欧美一区二区三区四区| 国产成人成网站在线播放青青| 无码人妻精品一区二区三区99v| 91九色单男在线观看| 亚洲精品视频一二三| 久久影院理伦片| 日本午夜精品一区二区| 久久久久久久免费视频| 欧美自拍大量在线观看| 国产精品久久久亚洲| 国产日韩欧美中文在线播放| 欧美成人免费一级人片100| 国产原创中文在线观看| 欧美激情亚洲综合一区| 国产伦精品一区二区三区视频黑人 | 国产在线视频不卡| 久国内精品在线| 91麻豆桃色免费看| 日本wwwcom| 国产精品福利小视频| 国产亚洲黄色片| 亚洲国产高清国产精品| 91精品国产九九九久久久亚洲 | 日本在线视频www| 久久免费国产精品1| 日本电影亚洲天堂| 国产精品视频播放| 国产伦精品一区二区三区 | 国产精品十八以下禁看| 国产日韩精品综合网站| 欧美久久精品午夜青青大伊人| 国产精品影院在线观看| 日韩在线第一区| 日韩专区中文字幕| 欧美激情亚洲天堂| 国产aaa一级片| 91精品国产自产在线老师啪| 国产中文字幕在线免费观看| 国产欧美精品一区二区三区介绍| 国产精品久久亚洲| 国产欧美日韩免费| 精品免费日产一区一区三区免费| 成人福利网站在线观看11| 日韩在线观看a| 久久精品亚洲精品| 国精产品一区一区三区视频 | 亚洲乱码国产一区三区| 日韩中文字幕亚洲| 国产美女视频免费| 日本一区免费观看| 欧美成人亚洲成人日韩成人| 国产成人精品av| 亚洲巨乳在线观看| 午夜肉伦伦影院| 国产精品丝袜一区二区三区| 精品人伦一区二区三区| 一区二区三区不卡在线| 日韩在线观看高清| av一区二区在线看| 青青草原一区二区| 亚洲一区二区三区sesese| 久久精品国产电影| 久久久亚洲天堂| 国产亚洲欧美一区二区三区| 日韩精品久久一区| 亚洲在线色站| 欧美成人免费va影院高清| 久久99精品久久久久久秒播放器 | 精品一区二区三区毛片| 涩涩日韩在线| 欧美激情18p| 国产精品乱码久久久久| 久久久久久网站| 91精品国产乱码久久久久久蜜臀| 国产亚洲精品久久久久久久| 欧美亚洲另类久久综合| 色99中文字幕| 亚洲最大成人网色| 久久成人综合视频| 国产精品视频成人| www亚洲欧美| 久久久久久久久久国产| 久久男人的天堂| 国产精品一久久香蕉国产线看观看| 欧美交换配乱吟粗大25p| 日韩精品―中文字幕| 日本最新高清不卡中文字幕| 一本色道久久99精品综合| 欧美精品一本久久男人的天堂| 国产精品无码专区在线观看| 深夜成人在线观看| 日韩在线精品一区| 久久人人97超碰人人澡爱香蕉| 97成人精品视频在线观看| 国产精品自产拍高潮在线观看| 国产一区视频在线| 国产一区深夜福利| 国产中文字幕日韩| 国产在线不卡精品| 明星裸体视频一区二区| 欧美性天天影院| 欧美日韩国产精品激情在线播放| 人妻夜夜添夜夜无码av| 欧美在线一区二区三区四 | 苍井空浴缸大战猛男120分钟| 国产欧美欧洲| 国产免费一区二区视频| 国产精选在线观看91| 国产女教师bbwbbwbbw| 国产欧美日韩亚洲| 成人久久久久爱| 91久久精品国产91久久| 91久久久久久久久| 久久久亚洲国产精品| 国产激情久久久久| 久久精品国产理论片免费| 久久久久久久久久久免费| 精品国产拍在线观看| 国产精品美女午夜av| 国产精品国色综合久久| 欧美日韩国产123| 亚洲砖区区免费| 日韩在线一级片| 欧美午夜性视频| 麻豆91蜜桃| 成人精品一区二区三区电影黑人| 操人视频欧美| 久久久亚洲精选| 日韩午夜在线视频| 国产精品成人在线| 在线一区日本视频| 视频在线99| 欧美亚洲视频在线看网址| 国内精品伊人久久| 国产男女免费视频| 国产成人在线一区二区| 久久精品中文字幕| 综合久久国产| 日本国产一区二区三区| 狠狠干 狠狠操| av资源站久久亚洲| 久久久久久九九九| 国产精品啪啪啪视频| 久精品免费视频| 天堂av一区二区| 欧美日韩亚洲在线| 国产伦精品一区二区三区视频黑人 | 国产精品免费观看在线| 欧美精品在线视频观看| 五月天亚洲综合情| 激情五月六月婷婷| av一区观看| 日韩三级成人av网| 在线视频亚洲自拍| 欧美影院在线播放| 国产乱子夫妻xx黑人xyx真爽| 久久手机视频| 久久国产精品99国产精| 日韩av观看网址| 国产在线观看不卡| 国产a级片免费看| 欧美精品亚州精品| 熟女视频一区二区三区| 国内精品国产三级国产99| 久久久亚洲综合网站| 欧美乱人伦中文字幕在线| 亚洲一区二区免费在线| 欧美国产二区| 97久久国产精品| 国产精品网址在线| 亚洲熟妇av一区二区三区| 免费中文日韩| 国产激情视频一区| 久精品免费视频| 欧美精品与人动性物交免费看| 91久久综合亚洲鲁鲁五月天| 国产精品高清一区二区三区| 日韩在线三区| 国产精品一区二区免费| 国产精品九九九| 青青在线免费观看|