как получить все документы с act_as_solr - PullRequest
1 голос
/ 22 августа 2009

Я делаю что-то вроде этого:

Item.find_by_solr('name:ab*')

и он говорит, что возвращает 297 результатов:

=> #<ActsAsSolr::SearchResults:0xb6516858 @total_pages=1, @solr_data={:docs=>[doc1, doc2, doc3...]}, :max_score=>1.6935261, :total_pages=>1, :total=>297}, @current_page=1>

Item.count_by_solr('name:ab*') also returns 297.

Тем не менее, при повторении показывает только 10 элементов:

Item.find_by_solr('reference_name:ab*').each do |i| puts i end

Я попытался добавить {: per_page => 80} и: limit =>: все, но это все еще показывает те 10. Любая идея, что мне не хватает?

Ответы [ 4 ]

1 голос
/ 27 августа 2009

как сказал @mausch Solr (и, как следствие, acts_as_solr), по умолчанию 10 результатов. Вы можете использовать опцию: limit, чтобы увеличить это, но для этого требуется только Fixnum, а не символ: all. Так что укажите: предел с Fixnum.

1 голос
/ 22 августа 2009

Из Solr FAQ :

Как мне получить ВСЕ соответствующие документы обратно? ... Как я могу вернуть неограниченное количество строк?

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

Что касается указания предела с помощью acts_as_solr, попробуйте что-то вроде :limit => 80

0 голосов
/ 08 декабря 2010

Вы должны указать параметр: offset в вашем запросе.

Итак, чтобы увидеть следующие 10 записей (с 11-го по 20-е) в Item, вы должны сделать это,

Item.find_by_solr('name:ab*', :offset => 10)

И чтобы увидеть следующие 10 записей, вы должны снова увеличить параметр: offset на 10. Таким образом, следующие 10 записей будут выглядеть следующим образом.

Item.find_by_solr('name:ab*', :offset => 20)

10 записей выбраны, потому что значение по умолчанию для параметра: limit равно 10. Мы можем изменить его на что-то другое, если мы хотим получить более 10 записей за раз.

# This query fetches 30 items, offset by 30. (assuming more than 30 entries are found by this query)
Item.find_by_solr('name:ab*', :limit => 30, :offset => 30)
0 голосов
/ 24 августа 2009

В моих заметках отрывочны, что вы можете изменить parser_methods.rb около l. 75, чтобы вернуть только идентификаторы AR, а не сами объекты. Стоит попробовать в больших наборах данных.

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