Solr基本配置(四)——緩沖區(qū)管理

Solr提供了很多內(nèi)置的緩存機(jī)制來提高查詢的性能,首先回顧一下與緩存相關(guān)的基礎(chǔ)知識:

緩沖區(qū)大小及置換規(guī)則

對于查詢來說緩沖區(qū)越大當(dāng)然越好表牢,但是緩沖區(qū)太大會消耗太多JVM內(nèi)存昂验。當(dāng)緩沖區(qū)滿了之后就需要有一定的置換規(guī)則對緩沖區(qū)里的對象進(jìn)行置換(回顧一下操作系統(tǒng)里面的緩沖區(qū)置換規(guī)則)铐达,在Solr里面主要有兩種置換規(guī)則:Least Recently Used和Least Frequently Used限次,這里就不詳細(xì)解釋了于宙,對于大部分搜索引擎來說扛稽,用Least Frequently Used的效果應(yīng)該會更好吁峻。

命中率和置換率

命中率就是當(dāng)前查詢的結(jié)果剛好在緩沖區(qū)中的概率。命中率越高越好在张。
  置換數(shù)量就是在當(dāng)前置換規(guī)則下有多少對象被置換出緩沖區(qū)用含。如果置換數(shù)量很大,就表示當(dāng)前緩沖區(qū)的太小帮匾。

緩沖對象的有效期

在Solr中啄骇,每一個緩沖區(qū)是綁定一個特定的searcher,如果當(dāng)前searcher關(guān)閉了瘟斜,那么緩沖區(qū)中的對象就會馬上失效缸夹。

Autowarming New Caches

在之前的配置中說過痪寻,Solr會在commit命令發(fā)出后就創(chuàng)建一個新的searcher,但是舊的searcher會在新searcher完全warm之后才會關(guān)閉虽惭。舊searcher的cache可以被移植到新searcher的cache中槽华,這個過程被稱為autowarming。
  在Solr中的每個緩沖區(qū)都有一個叫autowarmCount的屬性趟妥,這個屬性定義了autowarm的最大對象數(shù)量或者占舊cache的比例猫态。

下面介紹幾個Solr中重要的緩沖區(qū)及它們的配置:

Filter cache

Filter可以看為是從搜索結(jié)果中進(jìn)行二次查詢的語句,并且不會影響搜索結(jié)果披摄。例如有如下查詢: 


這個查詢要做的是在搜索結(jié)果中篩選出manu為Belkin的結(jié)果亲雪。假設(shè)現(xiàn)在我們要做另一個查詢,將q改為“usb”疚膊,fq的條件不變义辕,這時如果能運(yùn)用上一次的查詢結(jié)果就可以減少很多麻煩了。Filter cache就是在這時候發(fā)揮作用寓盗。
原始查詢?nèi)缦拢?/p>

查看Filter cache的狀態(tài):

將q改為Usb:

再查看filter cache:

Filter cache在solrconfig.xml中如下:

在實(shí)際應(yīng)用中灌砖,可以將autowarmCount設(shè)置為一個比較小的值,另外LFU置換規(guī)則更適合fiterCache傀蚌,推薦設(shè)置如下:

Query result cache

顧名思義基显,這個緩沖區(qū)保存的是返回的結(jié)果集。


在這個緩沖區(qū)中保存的是一個個鍵值對善炫,key為query撩幽,value為這個query返回的document ID. 當(dāng)索引改變的時候這個cache的信息也要改變,所以在warm這個cache的時候箩艺,Solr需要重新執(zhí)行query窜醉,這個過程可能會很耗時,所以可以將autowarmCount設(shè)置為一個相對比較小的值艺谆,使得新cache可以從舊的cache中warm一部分內(nèi)容榨惰,降低重新執(zhí)行query的消耗。

Query Result Window Size和Query Result Max Docs Size
這兩個屬性在solrconfig.xml中描述如下:

 <!-- Result Window Size
        An optimization for use with the queryResultCache.  When a search
        is requested, a superset of the requested number of document ids
        are collected.  For example, if a search for a particular query
        requests matching documents 10 through 19, and queryWindowSize is 50,
        then documents 0 through 49 will be collected and cached.  Any further
        requests in that range can be satisfied via the cache.  
     -->
   <queryResultWindowSize>20</queryResultWindowSize>

   <!-- Maximum number of documents to cache for any entry in the
        queryResultCache. 
     -->
   <queryResultMaxDocsCached>200</queryResultMaxDocsCached>

這兩個值一般設(shè)置為每個page大小的2-3倍静汤。

Enable Lazy Field Loading

該字段描述如下:

<!-- Lazy Field Loading
         If true, stored fields that are not requested will be loaded
         lazily.  This can result in a significant speed improvement
         if the usual case is to not load all stored fields,
         especially if the skipped fields are large compressed text
         fields.
    -->
    <enableLazyFieldLoading>true</enableLazyFieldLoading>

Document cache

之前介紹的query result cache保存的是query與其對應(yīng)的documentID琅催,而不是對應(yīng)的Document的內(nèi)容,Document cache就是用來緩存從硬盤中讀出來的document中的內(nèi)容撒妈。那么是否應(yīng)該將所有出現(xiàn)在query result cache中出現(xiàn)過的document都緩存進(jìn)來恢暖?答案是否定的排监,不過對于那種變化不頻繁的搜索引擎來說這樣做也未必不可狰右。

Field value cache

這個緩沖區(qū)保存的是Field value,一般用在需要根據(jù)字段排序的查詢舆床。如果需要進(jìn)一步了解這個緩沖區(qū)棋蚌,可以查詢Lucene文檔嫁佳。

到目前為止已經(jīng)介紹完了solrconfig.xml中比較重要的配置內(nèi)容,具體要怎么配置還需要根據(jù)實(shí)際情況進(jìn)行調(diào)整谷暮。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蒿往,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子湿弦,更是在濱河造成了極大的恐慌瓤漏,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,907評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件颊埃,死亡現(xiàn)場離奇詭異蔬充,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)班利,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評論 3 395
  • 文/潘曉璐 我一進(jìn)店門饥漫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人罗标,你說我怎么就攤上這事庸队。” “怎么了闯割?”我有些...
    開封第一講書人閱讀 164,298評論 0 354
  • 文/不壞的土叔 我叫張陵彻消,是天一觀的道長。 經(jīng)常有香客問我宙拉,道長证膨,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,586評論 1 293
  • 正文 為了忘掉前任鼓黔,我火速辦了婚禮央勒,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘澳化。我一直安慰自己崔步,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,633評論 6 392
  • 文/花漫 我一把揭開白布缎谷。 她就那樣靜靜地躺著井濒,像睡著了一般。 火紅的嫁衣襯著肌膚如雪列林。 梳的紋絲不亂的頭發(fā)上瑞你,一...
    開封第一講書人閱讀 51,488評論 1 302
  • 那天,我揣著相機(jī)與錄音希痴,去河邊找鬼者甲。 笑死,一個胖子當(dāng)著我的面吹牛砌创,可吹牛的內(nèi)容都是我干的虏缸。 我是一名探鬼主播鲫懒,決...
    沈念sama閱讀 40,275評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼刽辙!你這毒婦竟也來了窥岩?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,176評論 0 276
  • 序言:老撾萬榮一對情侶失蹤宰缤,失蹤者是張志新(化名)和其女友劉穎颂翼,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體慨灭,經(jīng)...
    沈念sama閱讀 45,619評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡疚鲤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,819評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了缘挑。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片集歇。...
    茶點(diǎn)故事閱讀 39,932評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖语淘,靈堂內(nèi)的尸體忽然破棺而出诲宇,到底是詐尸還是另有隱情,我是刑警寧澤惶翻,帶...
    沈念sama閱讀 35,655評論 5 346
  • 正文 年R本政府宣布姑蓝,位于F島的核電站,受9級特大地震影響吕粗,放射性物質(zhì)發(fā)生泄漏纺荧。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,265評論 3 329
  • 文/蒙蒙 一颅筋、第九天 我趴在偏房一處隱蔽的房頂上張望宙暇。 院中可真熱鬧,春花似錦议泵、人聲如沸占贫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽型奥。三九已至,卻和暖如春碉京,著一層夾襖步出監(jiān)牢的瞬間厢汹,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評論 1 269
  • 我被黑心中介騙來泰國打工谐宙, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留烫葬,地道東北人。 一個月前我還...
    沈念sama閱讀 48,095評論 3 370
  • 正文 我出身青樓卧惜,卻偏偏與公主長得像厘灼,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子咽瓷,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,884評論 2 354

推薦閱讀更多精彩內(nèi)容