solr進階五:Solr緩存技術

原文:Solr4.7緩存技術


磁盤IO往往是計算機系統響應速度的一個突出瓶頸,搜索引擎查詢很平凡,減少搜索過程中的磁盤IO對提升搜索響應速度無疑有莫大的幫助,在solr中,提供自帶的緩存機制。我們只需要在solrconfig.xml中加幾個配置項就可以了。

下面我們看看solr的3個緩存。

Filter cache:這個是被用來緩存過濾器(就是查詢參數fq)的結果和基本的枚舉類型。

Document cache:這個是被用來緩存lucene documents的,就是存儲field的那個東西。

Query result cache:這個一目瞭然,把查詢結果緩存起來。

 

一、緩存配置

Solr的緩存配置在solrconfig.xml文件的查詢配置部分,也就是<query>和</query>標籤之間。Solr實現了2種緩存機制,分別是LRUCache、FastLRUCache;

LRUCache:基於線程安全的LinkedHashMap實現。

FastLRUCache:基於ConcurrentHashMap實現。

單線程的情況下FastLRUCache具有更快的gets操作和比較慢的puts操作,因此使用它的查詢命中率會高出LRUCache 75%,當然在多線程的情況下差距可能更大。

參數說明:

Class:指定使用solr的哪種緩存機制。

Size:允許分配多少個實體(entity)的緩存空間。

initialSize:分配初始多少個實體(entity)的緩存空間。

autowarmCount:自動預裝入實體數。

1、  Filter cache

<filterCache  
   class="solr.FastLRUCache"  
   size="200"  
   initialSize="200"  
   autowarmCount="100"/> 
2、Documentcache

<queryResultCache  
   class="solr.FastLRUCache"  
   size="500"  
   initialSize="500"  
autowarmCount="250"/> 
3、Queryresult cache
    <documentCache  
       class="solr.FastLRUCache"  
       size="11000"  
       initialSize="11000" />  

4、查詢結果窗口值設置

查詢結果窗口值是和Query result cache配合使用的。這個值是個什麼概念呢,就是我設置查詢結果窗口值爲50,我查詢20到30條的數據,第一次查詢的時候solr會從索引庫中取出0到49條的數據,我翻頁的時候就不用再到索引庫裏面去查詢了,直接從緩存裏面取就可以了,大大的提高了查詢響應速度。

    <queryResultWindowSize>50</queryResultWindowSize>  
二、完整配置
<!--緩存配置-->  
  <query>  
    <!--過濾器cache-->  
    <filterCache  
       class="solr.FastLRUCache"  
       size="200"  
       initialSize="200"  
       autowarmCount="100"/>  
         
    <!--查詢結果cache-->  
    <queryResultCache  
       class="solr.FastLRUCache"  
       size="500"  
       initialSize="500"  
       autowarmCount="250"/>     
         
     <!--文檔cache-->  
     <documentCache  
       class="solr.FastLRUCache"  
       size="11000"  
       initialSize="11000" />    
         
     <queryResultWindowSize>200</queryResultWindowSize>  
  </query> 


發佈了57 篇原創文章 · 獲贊 13 · 訪問量 37萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章