В Solr есть ли способ получить все результаты из запроса что-то вроде start = 0 & columns = * или row = all? - PullRequest
1 голос
/ 11 января 2011

насколько я знаю, это невозможно, как в Solr Wiki.у вас, ребята, есть работа?

Ответы [ 2 ]

7 голосов
/ 12 января 2011

Единственный обходной путь - установить достаточно большое значение строки для возврата всех документов.

Однако я не рекомендовал бы это для чего-то большего, чем около 1000 документов.Если количество загружаемых документов достаточно велико, у вас возникнут проблемы с памятью или временем ожидания из-за XML, который вы должны сгенерировать и проанализировать.Например, если в вашем индексе 2-3 миллиона документов, действительно ли вы хотите всего этого в одном ответе?Это разбито на страницы по причине.Вы, вероятно, должны использовать это.

Из второстепенной важности ... Почему вы делаете это для начала?Какой смысл помещать кучу данных в поисковый индекс, если вы просто собираетесь извлечь их ВСЕ?Возможно, в этот момент лучше использовать исходный источник данных.

3 голосов
/ 23 января 2011

Если вам нужно получить все, вы можете либо установить смехотворно большое количество строк (как указано выше, с оговоркой, что, ну, это не будет работать, потому что у вас не хватит памяти), либо выполнить итерацию ваши результаты, используя "строки" и "начало"

Псевдокод:

numresults = <do an initial query and find out how many results there are>
rows = 100 (or 1000 or 100,000 or whatever you can handle)
start = 0
while (start) <= numresults
 url = "http://.../?q=<your query>&rows=<rows>&start=<start>&...
 result = <do the call with the url>
 <process the docs>
 start += rows
endwhile

См. http://wiki.apache.org/solr/CommonQueryParameters для использования "start"

Также помните, что когда вы захватываете кучу документов, используйте параметр 'fl', чтобы получить только то, что вы собираетесь использовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...