2013-04-03 2 views
0

Я пытаюсь запустить запрос на мой локальный сервер solr (один экземпляр). Я также добавляю фильтры для идентификаторов.
Итак, в случае 10000 идентификаторов я создаю 10 фильтрующих запросов, каждый из которых состоит из 1000 идентификаторов.SocketException во время работы Solr Query с большим количеством фильтрации

Фильтр запроса выглядит следующим образом:

"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 

Я искал googled вокруг, но нашел только о maxB oolean запросы, которые не относятся к моему делу, вероятно,

+1

Я нашел решение. Оказывается, что по умолчанию Solrj использует GET вместо POST. Простым способом исправить является использование server.query (query, SolrRequest.METHOD.POST). –

ответ

0

Да Igor,
Вы верны.
По умолчанию Solrj использует GET вместо POST. Итак, вам нужно использовать server.query (query, SolrRequest.METHOD.POST).

 Смежные вопросы

  • Нет связанных вопросов^_^