2013-10-24 73 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