在Solr中定时查询

Ben*_*min 7 java lucene solr

我通过自定义开发的图层查询solr,我在我的图层中超时的几个查询仍然在solr实例中.solr中是否有一个参数可用于超时特定查询

che*_*ffe 9

客户断开连接后Solr查询中所述 并写在Solr FAQ中

在内部,Solr没有做任何事情来超时任何请求 - 它允许更新和查询需要花费很长时间才能完全处理.

但在FAQ的同一地点写的

但是,用于运行Solr的servlet容器可能会对所有请求施加任意超时限制.如果您发现此值太低,请参阅Serlvet容器的文档.(在Jetty中,相关设置为"maxIdleTime",以毫秒为单位)

因此,您可以将容器配置为关闭长时间运行的请求,以便连接的HTTPClients接收关闭.

然而,这可能还不够,虽然在服务器上产生负载,但Solr可能在内部仍在工作.因此可以使用公共timeAllowed参数.

timeAllowed - 此参数指定搜索完成所允许的时间量(以毫秒为单位).如果此时间在搜索完成之前到期,则将返回任何部分结果.

在每个请求中或在solrconfig.xml中配置为默认值.

<requestHandler name="standard" class="solr.StandardRequestHandler" default="true">
    <lst name="defaults">
        <!-- other parts left out -->
        <!-- timeout (in milliseconds) -->
        <int name="timeAllowed">5000</int>
    </lst>
</requestHandler>
Run Code Online (Sandbox Code Playgroud)

  • 恕我直言,无法实现.你不能两者兼得.但我会在邮件列表上询问或在此处发布单独的问题. (2认同)
  • @Rougher:超时返回部分结果,目前没有机制可以获取超时错误或没有结果。您可以在应用程序代码本身中保留超时,该超时应小于 solr 查询超时字段。一旦您的应用程序超时,只需返回错误或 0 结果作为响应,而不关心部分结果。 (2认同)