【问题标题】:queryResultMaxDocsCached and documentCache in solrsolr 中的 queryResultMaxDocsCached 和 documentCache
【发布时间】:2016-06-07 16:16:24
【问题描述】:

据我了解,queryChache 缓存了每个查询的匹配文档 ID 列表。 根据Solr in Action 一书中提供的信息,我们将queryResultMaxDocsCached 参数设置为基于我们希望每个查询缓存的最大文档数的值。如果这是真的,该值是否会添加到我们在 documentCache 中设置的金额?两者有什么区别?

摘自Solr in ActionqueryResultMaxDocsCached

你可以想象,一个 在缓存中保存数百万个文档的结果集将极大地影响可用 Solr 中的内存。该元素允许您限制 为查询结果缓存中的每个条目缓存的文档数。

摘自Solr in ActiondocumentCache

查询结果缓存保存与查询匹配的内部文档 ID 列表,因此即使 如果查询结果被缓存,Solr 仍然需要从磁盘加载文档来生成 搜索结果。文档缓存用于存储从磁盘加载的文档 在由他们的内部文档 ID 键入的内存中。由此可见查询结果缓存 使用文档缓存在缓存结果集中查找文档的缓存版本。

【问题讨论】:

    标签: caching solr


    【解决方案1】:

    从您发布的描述中可以看出,queryCache 将查询映射到该查询的文档 ID。即搜索“foo”给出了“这些 ids”:foo -> [1, 2, 3, 4, 5, 6]

    文档缓存简化了这些文档 ID 的查找,这意味着 Solr 不必再次尝试从磁盘加载它们:1 -> {'bar': 'foo', 'spam': 'eggs'}, 2 -> {'bar': 'foo', 'python': 'idle'}, 3 -> ..., 等。

    如果您有不同的查询,但它仍然引用同一组(或部分)文档,则可以在缓存中查找这些文档,而不是从磁盘中读取:bar -> [2, 8, 16] 仍然能够在缓存中找到文档2,避免去磁盘加载文档的详细信息。

    这些缓存是独立的,由不同的设置处理。

    【讨论】:

    • 我想你错过了我的问题。我想知道 queryResultMaxDocsCached 和 documentCache 设置有何不同,以及 queryResultMaxDocsCached 是否添加到 documentCache 计数?
    • 一个是关于查询结果中缓存的文档id的数量,另一个是关于从所有缓存中单独缓存的文档(实际文档及其内容)的数量。它们是具有单独设置的单独缓存,因此 Solr 内的 总缓存大小 为(queryResultCacheSize + documentCache + filterCache + fieldCache + .. 等)。据我所知,这些缓存彼此之间没有任何关系,只是它们可以相互使用以实现所需的功能。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-03
    • 2013-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多