2016-06-07 29 views
0

據我所知,queryChache爲每個查詢緩存匹配的documentIds列表。 根據書Solr in Action中提供的信息,我們將queryResultMaxDocsCached參數設置爲基於我們希望每個查詢緩存的文檔的最大數量的值。如果這是真的,那麼這個值是否增加了我們在documentCache中設定的數量?兩者有什麼區別 ?queryResultMaxDocsCached和documentCache solr

Solr in Action摘錄了queryResultMaxDocsCached

正如你可以想像,一個 結果集拿着數百萬個文檔的高速緩存將極大地Solr中影響可用內存 。該元素允許您限制爲查詢結果緩存中的每個條目緩存的文檔數量 。

Solr in Action摘錄了documentCache

查詢結果緩存保存與查詢匹配的內部文件ID的列表,所以即使 如果查詢結果被緩存,Solr中仍然需要加載的文件從磁盤產生 搜索結果。文檔緩存用於將從磁盤 加載的文檔存儲在由內部文檔ID鍵入的內存中。由此可見,查詢結果緩存 使用文檔緩存來查找緩存結果集中文檔的緩存版本。

回答

1

你可以從您發佈的描述看到的,實現QueryCache保持映射到該查詢的文檔ID查詢。即對於「富」搜索了「這些ID」:foo -> [1, 2, 3, 4, 5, 6]

文件緩存簡化了這些文檔ID的查找,這意味着Solr的將不必再次嘗試從磁盤加載它們:1 -> {'bar': 'foo', 'spam': 'eggs'}, 2 -> {'bar': 'foo', 'python': 'idle'}, 3 -> ...,

如果您有不同的查詢,但仍引用相同的一組文檔(或其子集),則可以在緩存中查找這些文檔,而不是從磁盤讀取:​​3210仍然能夠查找文檔2在緩存中,並避免去磁盤加載文件的細節。

這些緩存是分開的,並通過單獨的設置進行處理。

+0

我想你錯過了我的問題。我想知道queryResultMaxDocsCached和documentCache設置如何不同,並且queryResultMaxDocsCached是否添加到documentCache數量? – Viraj

+0

一個是關於在queryResult中緩存的文檔ID的數量,另一個是關於與所有緩存分開緩存的文檔數量(實際文檔及其內容)。它們是獨立的緩存,具有獨立的設置,因此Solr中的_total緩存size_是(queryResultCacheSize + documentCache + filterCache + fieldCache + .. etc)。據我所知,這些緩存以任何方式彼此不相關,只是它們可以互相使用以獲得所需的功能。 – MatsLindh