【问题标题】:How to clear the cache in Solr?如何清除 Solr 中的缓存?
【发布时间】:2026-01-06 12:35:03
【问题描述】:

我正在尝试比较不同 Solr 查询的性能。为了得到公平的测试,我想清除查询之间的缓存。

这是怎么做到的?当然也可以重启服务器,我很好奇有没有更快的方法。

【问题讨论】:

  • 为了获得更公平的测试(取决于您实际测量的内容),您还可以在每次测试之前清除操作系统缓冲区缓存(请参阅linux-mm.org/Drop_Caches)。
  • @jpountz 感谢您的链接。我用echo 3 > /proc/sys/vm/drop_caches 对其进行了测试,但它没有清除 Solr 缓存。
  • 对,它只清除操作系统缓存。要清除 solr 缓存,我认为 autowarmCount=0 并运行提交会起作用 wiki.apache.org/solr/SolrCaching#autowarmCount '

标签: caching solr lucene information-retrieval


【解决方案1】:

我使用的是 4.2.1 版,即使使用 autowarmCount="0" 进行数据导入后缓存也不会更新。

在这种情况下,在 Solr Admin 上(通常是 http://localhost:8983/

转到 Core Admin 并点击 重新加载。 刷新后,您应该会在“当前”字段上看到一个绿色复选标记。

【讨论】:

    【解决方案2】:

    禁用来自solrconfig.xml的所有缓存。

    请注意,Lucene FieldCache 仍将启用。

    【讨论】:

    • 问题是关于清除缓存,而不是禁用它。
    【解决方案3】:

    仅供参考

    如果要禁用缓存(或全部),请在 solrconfig.xml 中注释掉这些部分并重新启动 solr。

    示例禁用 queryResultCache

       <!-- 
       <queryResultCache class="solr.LRUCache"
                          size="5000"
                          initialSize="5000"
                          autowarmCount="2000"/>
    
    -->
    

    【讨论】: