我正在处理使用SOLR生成基于查询的数据集的现有Web平台。我们有近乎实时(<1分钟)发布新内容的问题。有一个缓存机制可以帮助减少SOLR服务器上的资源负载,但是这种缓存会在基于SOLR查询的数据集中引入新内容的延迟时间。
我希望能够根据生成缓存项的SOLR查询使缓存无效,但我遇到了一个绊脚石:使用1000多个SOLR查询,很难知道哪个(如果有的话)它们适用于给定的文件。到目前为止我们已经确定的方法包括:
这些都不是真正理想的,但如果没有某种方法来“转过”流程并通过查询CEP风格运行文档,我不确定是否有更好的方法。
有没有人处理类似情况?
答案 0 :(得分:1)
Solr为所有查询响应发出ETag,并尊重标准HTTP缓存请求标头,如If-None-Match,If-Match等。请参阅Solr And HTTP Caches
所以这是围绕这个协调你的缓存系统的问题。
答案 1 :(得分:0)
我认为标准方法是从单个更改的文档中创建一个“索引”(使用memory index)。然后,您可以在此索引上运行数千个查询,如果查询匹配,则会使该查询的缓存无效。由于索引太小而且完全在内存中,所以它非常快。