2013-10-24 39 views
5

我打开查询以通过自定义开发图层来解决问题,并且我的层中超时的几个查询仍处于solr实例中。是否有Solr的一个参数,它可以用于超时的特定查询在Solr中定时查询

回答

8

Solr query continues after client disconnects?陈述和written in the Solr FAQ

内部,Solr的什么都不做超时的任何请求 - 它可以让这两个更新和查询不管花多长时间他们需要充分处理。

但在回答问题的相同点是写

然而,servlet容器用于运行Solr的可对所有请求处以任意超时限制。如果发现此值太低,请参阅Serlvet容器的文档。 (在Jetty中,相关设置为“maxIdleTime”,以毫秒为单位)

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

然而,这可能还不够,Solr内部仍然可以工作,虽然在您的服务器上产生负载。因此可能使用the common timeAllowed parameter

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> 
+1

但是,如果我不想得到部分结果,我需要做什么? – Rougher

+0

@Rougher所以你想防止超时?这取决于你的容器(如果你还有一个)或你的solr实例的配置。尝试其他方式或问一个单独的问题:) – cheffe

+0

我想超时但没有部分结果。我的容器是码头(我使用solr 5.4.1) – Rougher