Solr/Solrj: Как я могу определить общее количество документов в индексе?
Как определить общее количество документов в индексе Solr с помощью Solrj?
После нескольких часов самостоятельных поисков у меня действительно есть ответ (приведенный ниже); Я только публикую этот вопрос, чтобы другим было легче найти решение.
5 ответов
Решение
Вот что я использую. Это каноническое? Есть ли способ лучше?
SolrQuery q = new SolrQuery("*:*");
q.setRows(0); // don't actually request any data
return server.query(q).getResults().getNumFound();
Ваш ответ на отправку запроса : вероятно, лучшее, наиболее общее решение. Особенно, если вы используете SolrCloud. Тем не менее, есть альтернативное решение, Solr Core Admin API
Вставка всего
curl
:
curl -s --negotiate -u: 'hostname:8983/solr/my_collection/query?q=*:*&rows=0' | jq '.response | .numFound'
1868000278
В зависимости от того, как вы его используете, обратите внимание на доступные параметры формата. Для моего случая XML идеален.
http://localhost:8983/solr/drupal/select?q=*%3A*&rows=0&wt=xml
Вот что я использую, чтобы получить полные документы с использованием JSON/PHP, надеюсь, это поможет
// Get total number of documents in solr
$solrObj = file_get_contents("http://HOSTNAME:8983/solr/COLLECTION
NAME/select?q=*:*&rows=0&wt=json");
// var_dump(json_decode($solrObj));
$res_obj = json_decode($solrObj);
$numDocs = $res_obj->response->numFound;
echo "Total number docs found!: ".$numDocs."<br />";