我读了有关缓存和变暖的文章,但我留下了一堆问题。
谷歌把我带到了这里:https://solr.apache.org/guide/7_3/query-settings-in-solrconfig.html
不过最新版本似乎在这里:https://solr.apache.org/guide/solr/latest/configuration-guide/caches-warming.html
读完此文档后,我有一系列问题,我将在这里列出它们。不过主要问题是关于自动加热的。
1 / 我看到提到“索引搜索器”,它可以具有具有生命周期的实例,然后这些实例具有缓存。
我是否应该理解为,构建新实例并使旧实例无效的过程意味着“实例”是指在构建新实例的同时,可能仍有旧实例在提供旧数据?而不是同时为一个核心设置多个索引搜索器?
2/ 就缓存失效而言,这一切是如何运作的?缓存基本上就是搜索器,如果 1 个缓存失效,则必须重新创建搜索器及其所有其他缓存吗?
3/ 我读到,自动预热基本上是从旧的 Index Searcher 实例中获取一堆条目并将它们添加到新实例中。是否有任何保证这些复制的条目仍然有效的措施?也就是说:如果由于某些提交可能包含某些文档或查询结果的更改而导致缓存不再有效……是否有一种机制可以确保我们避免复制包含基于过时材料的文档/结果的旧条目?
4/ 我见过使用 512 个条目等数字的缓存示例。这似乎很少。这里有什么考虑因素?由于必须构建新的索引搜索器,缓存是否需要非常频繁地重建,因此一直创建大对象是一种浪费,而这些对象却经常被丢弃然后重建?还是其他原因?
5/ 假设您有一个应用程序,它根据应用程序生成的用户 ID 创建文档并执行查询。我有 1 个核心/集合“user_documents”,所有内容都放在那里,“用户 ID”是一个字段。在这种情况下,似乎 1 个用户的操作可能会使所有用户的缓存失效。如何避免这种情况?
6/ 关于过滤器缓存,我读到 LRU 缓存中最旧的条目会被新条目替换。由于过滤器缓存查询的每个“fq”的条目,是否会发生长查询被推出缓存,但只有部分 fq 被推出,而其他的则不会被推出的情况?这是件坏事吗?
7/ 对于文档缓存,我看到以下行:
documentCache 的大小应始终大于 max_results
倍的 max_concurrent_queries,以确保 Solr 不需要在请求期间重新获取文档。
这是什么意思?我找不到关于 max_results 和 max_concurrent_queries 作为设置名称的文档。
感谢所有为此奉献时间的人。