据我所知,queryChache为每个查询缓存一个匹配的documentIds列表。根据书Solr in Action中提供的信息,我们根据希望每个查询缓存的文档的最大数量,将queryResultMaxDocsCached参数设置为一个值。如果这是真的,那么这个值会增加我们在documentCache中设置的数量吗?这两者有什么区别呢?
摘自Solr in Action for queryResultMaxDocsCached
可以想象,在缓存中存储数百万个文档的结果集将极大地影响Solr中的可用内存。元素允许您限制查询结果缓存中每个条目缓存的文档数。
摘自Solr in Action for documentCache
查询结果缓存包含与查询匹配的内部文档if列表,因此即使缓存了查询结果,Solr仍然需要从磁盘加载文档以生成搜索结果。文档缓存用于将从磁盘加载的文档存储在由内部文档in键控的内存中。因此,查询结果缓存使用文档缓存在缓存的结果集中查找文档的缓存版本。
发布于 2016-06-08 21:29:52
如您所发布的描述所示,queryCache将映射到该查询的文档ids的查询保持不变。例如,对"foo“的搜索提供了”这些ids":foo -> [1, 2, 3, 4, 5, 6]
Document简化了这些文档ids的查找,这意味着Solr不必再次尝试从磁盘加载它们:1 -> {'bar': 'foo', 'spam': 'eggs'}, 2 -> {'bar': 'foo', 'python': 'idle'}, 3 -> ...,等。
如果您有不同的查询,但它仍然引用相同的文档集(或子集),则可以在缓存中查找这些文档,而不是从磁盘中读取:bar -> [2, 8, 16]仍然能够在缓存中找到文档2,并避免进入磁盘加载文档的详细信息。
这些缓存是独立的,并由不同的设置处理。
https://stackoverflow.com/questions/37684431
复制相似问题