2014-01-03 3 views
1

Я пытаюсь понять официальный учебник Solr.сольр. что это означает numfound?

Я делаю запрос:

http://localhost:8983/solr/collection1/select/?indent=on&q=*&fl=name,id 

и увидеть следующий ответ:

<response> 
<lst name="responseHeader"> 
<int name="status">0</int> 
<int name="QTime">125</int> 
<lst name="params"> 
<str name="fl">name,id</str> 
<str name="indent">on</str> 
<str name="q">*</str> 
</lst> 
</lst> 
<result name="response" numFound="28" start="0"> 
<doc>...</doc> 
<doc>...</doc> 
<doc>...</doc> 
<doc>...</doc> 
<doc>...</doc> 
<doc>...</doc> 
<doc>...</doc> 
<doc>...</doc> 
<doc>...</doc> 
<doc>...</doc> 
</result> 
</response> 

почему numfound равен 28, но число документ является 10?

+1

Угадайте здесь ... Он дает вам одну страницу результатов (первые десять документов) за раз? – Floris

+0

Как я могу изменить это значение? – gstackoverflow

+0

См. Мой ответ о том, как изменить свой запрос, чтобы получить «все» данные (или следовать ссылкам в ответе @ jro, и выяснить это там ...) – Floris

ответ

4

Если вы измените запрос

http://localhost:8983/solr/collection1/select/?indent=on&q=*&fl=name,id&rows=1000000 

Параметр rows= указывает количество возвращаемых результатов. При значении 1000000 вы будете эффективно получать все документы (а не только первые 10, что по умолчанию).

Если вы хотите, чтобы быть немного более осторожным, вы можете прочитать параметр numFound, а затем сделать несколько звонков, чтобы вернуть блоки данных с

http://localhost:8983/solr/collection1/select/?indent=on&q=*&fl=name,id&start=0 
http://localhost:8983/solr/collection1/select/?indent=on&q=*&fl=name,id&start=10 
http://localhost:8983/solr/collection1/select/?indent=on&q=*&fl=name,id&start=20 

Это будет возвращать 10, 10, и 8 докторов соответственно.

+0

Я не понимаю связи между {0 10 20} и {10 10 8} – gstackoverflow

+0

У вас всего 28 документов. Когда вы начинаете с 0, вы получаете первые 10. Когда вы начинаете с 10, вы получаете следующий 10. Когда вы начинаете с 20, осталось только 8 до конца - так что вы получите все из них. Имеет ли это смысл? – Floris

+1

Я понял вас) спасибо – gstackoverflow

2

numFound указывает количество документов в индексе поиска, соответствующих вашему запросу. Однако Solr возвращает только указанное количество документов в результатах. Без настройки параметров используются значения по умолчанию; все настраивается либо через строку запроса, либо в конфигурацию запроса (см. solrconfig.xml).

Получение этих результатов осуществляется по параметрам поискового вызова, в частности start и rows.

+0

+1 для поиска ссылок. Я написал альтернативный ответ для людей, которые не хотят следовать ссылкам и выяснять его там ... – Floris

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