2013-04-03 80 views
0

我想運行一個查詢到我的本地solr服務器(單個實例)。 我也在爲ID添加過濾器。
因此,在10000個ID的情況下,我創建了10個篩選查詢,每個篩選查詢由1000個ID組成。SocketException當運行Solr查詢與大量過濾

篩選查詢看起來是這樣的:

"id:(1 2 3 n)" 

我還使用Solrj所以它是這樣:

query.addFilterQuery("id:(1 2 3 n)"); 

但經過某個閾值(這是1000 5分鐘前,現在它的周圍800)我開始收到例外:

org.apache.solr.client.solrj.SolrServerException: No live SolrServers available to handle this request 
    Caused by: org.apache.solr.client.solrj.SolrServerException: IOException occured when talking to server at: http://localhost:8080/solr 
     at org.apache.solr.client.solrj.impl.HttpSolrServer.request(HttpSolrServer.java:416) 
     at org.apache.solr.client.solrj.impl.HttpSolrServer.request(HttpSolrServer.java:181) 
     at org.apache.solr.client.solrj.impl.LBHttpSolrServer.request(LBHttpSolrServer.java:447) 
     ... 37 more 
    Caused by: java.net.SocketException: Software caused connection abort: recv failed 

我搜索了一下,但發現只有約maxB可能不是我的情況的oolean查詢

+1

我找到了解決方案。事實證明,默認情況下,Solrj使用GET而不是POST。修復的簡單方法是使用server.query(query,SolrRequest.METHOD.POST)。 –

回答

0

是Igor,
你是對的。
默認情況下,Solrj使用GET而不是POST。 所以你必須使用server.query(查詢,SolrRequest.METHOD.POST)。