Solr的緩存體系
--lvpei.cnblogs.com 翻譯自http://wiki.apache.org/solr/SolrCaching ,翻譯的很差,不如看原版。
Solr緩存與Solr的索引搜索器(SolrIndexSearcher)息息相關的,而眾所周知,索引的結構很難做出大的變動,效率也是板上釘釘的事情。因此提高索引搜索器的使用效率,使之在任何緩存都能夠高效并可重用是目前需要我們去做的工作。在Solr中所提到的緩存和我們平常遇到的緩存不同。在Solr中的緩存對象將不會在一段時間之后過期,也就是說,只要索引搜索器是存在的,那么高速緩存對象也一定存在。
滿足索引搜索器服務的要求,并在一個新的搜索器被打開,新的會自動后臺預熱,原來的那個搜索器仍然滿足對外服務的要求。新的搜索器就緒時,它將作為當前搜索被注冊,并將處理以后新的搜索請求。而舊的搜索器在把它當前所有搜索請求完成后,將會關閉。當前新的搜索器被做為自動預熱的根源。在打開一個新的搜索者時其高速緩存可能會預先設定或者自動預熱,并使用舊的搜索器的數據緩存。目前有兩種緩存實現 — — solr.search.LRUCache (LRU = 最近最少使用內存中),和 solr.search.FastLRUCache。
常見的緩存配置參數
class
您想要使用、 可實現的 SolrCache 實現的
solr.search.LRUCache
solr.search.FastLRUCache
size
最大高速緩存中的條目數。initialSize
autowarmCount
從舊的緩存中需要預熱的緩存對象數量。在打開一個新的搜索器時其高速緩存可能會從緩存中舊的搜索器所屬的緩存對象預設或者"autowarmed"。autowarmCount 是將新的搜索在重新生成的緩存條目數。現在可以將 autowarmCount 指定為百分比 (即: 90%) 可計算相對現有緩存中的項的數目。
Types of Caches and Example Configuration
FilterCache
過濾器緩存(filterCache)存儲無序的文檔編號列表。此緩存有三個不同的目的:
1、 過濾器緩存存儲任何solr明確要求執行的過濾查詢結果(fq參數)。每個過濾器和緩存分別執行。閑暇時用它來限制查詢所返回結果的數量.)
2、 過濾器緩存是用于在某些情況下,小面。 (特別是,當TermEnum方法是使用一個filterCache項為每個測試項補充說。)
3、 過濾器緩存可能被用來進行排序,如果<useFilterForSortedQuery/>配置選項設置為true在solfconfig.xml。
如果使用fieldCache的方法,建議設置filterCache大小比例。
QueryResultCache
此緩存中存儲的文檔 id,是按某些條件查詢結果排序的有序的集。
在 queryResultCache 的內存使用情況明顯小于在 filterCache ,因為它只存儲文檔由查詢返回給用戶的 id。
DocumentCache
存儲在documentCache是從磁盤中提取的Lucene的文檔對象。越是字段存儲在磁盤上,這種緩存的內存使用量將越高。
User/Generic Caches
用戶/通用緩存,通過SolrIndexSearcher.getCache(),cacheLookup(),目的是使用戶/應用程序級數據的簡單緩存。參數應指定為實現solr.search.CacheRegenerator。
Lucene FieldCache
Lucene 具有一個低級別"字段 緩存",用于進行排序 (和在某些情況下 faceting)。

浙公網安備 33010602011771號