Go ahead and put an absurdly large value as the rows parameter.

Then wait, because that query is going to take a really long time, it can 
interfere with every other query on the Solr server (denial of service), and 
quite possibly cause your client to run out of memory as it parses the result.

After you break your system with the query, you can go back to paged results.

wunder

On Sep 17, 2010, at 5:23 AM, Christopher Gross wrote:

> @Markus Jelsma - the wiki confirms what I said before:
> rows
> 
> This parameter is used to paginate results from a query. When
> specified, it indicates the maximum number of documents from the
> complete result set to return to the client for every request. (You
> can consider it as the maximum number of result appear in the page)
> 
> The default value is "10"
> 
> ...So it defaults to 10, which is my problem.
> 
> @Sashi Kant - I was hoping that there was a way to get everything in
> one shot, hence trying to override the rows parameter without having
> to put in an absurdly large number (that I might have to
> replace/change if the collection size grows above it).
> 
> @Scott Gonyea - It's a 10-net anyways, I'd have to be on your network
> to do any damage. ;)
> 
> -- Chris
> 
> 
> 
> On Thu, Sep 16, 2010 at 5:57 PM, Scott Gonyea <sc...@aitrus.org> wrote:
>> lol, note to self: scratch out IPs.  Good thing firewalls exist to
>> keep my stupidity at bay.
>> 
>> Scott
>> 
>> On Thu, Sep 16, 2010 at 2:55 PM, Scott Gonyea <sc...@aitrus.org> wrote:
>>> If you want to do it in Ruby, you can use this script as scaffolding:
>>> require 'rsolr' # run `gem install rsolr` to get this
>>> solr  = RSolr.connect(:url => 'http://ip-10-164-13-204:8983/solr')
>>> total = solr.select({:rows => 0})["response"]["numFound"]
>>> rows  = 100000
>>> query = {
>>>   :rows   => rows,
>>>   :start  => 0
>>> }
>>> pages = (total.to_f / rows.to_f).ceil # round up
>>> (1..pages).each do |page|
>>>   query[:start] = (page-1) * rows
>>>   results = solr.select(query)
>>>   docs    = results[:response][:docs]
>>>   # Do stuff here
>>>   #
>>>   docs.each do |doc|
>>>     doc[:content] = "IN UR SOLR MESSIN UP UR CONTENT!#{doc[:content]}"
>>>   end
>>>   # Add it back in to Solr
>>>   solr.add(docs)
>>>   solr.commit
>>> end
>>> 
>>> Scott
>>> 
>>> On Thu, Sep 16, 2010 at 2:27 PM, Shashi Kant <sk...@sloan.mit.edu> wrote:
>>>> 
>>>> Start with a *:*, then the “numFound” attribute of the <result>
>>>> element should give you the rows to fetch by a 2nd request.
>>>> 
>>>> 
>>>> On Thu, Sep 16, 2010 at 4:49 PM, Christopher Gross <cogr...@gmail.com> 
>>>> wrote:
>>>>> That will stil just return 10 rows for me.  Is there something else in
>>>>> the configuration of solr to have it return all the rows in the
>>>>> results?
>>>>> 
>>>>> -- Chris
>>>>> 
>>>>> 
>>>>> 
>>>>> On Thu, Sep 16, 2010 at 4:43 PM, Shashi Kant <sk...@sloan.mit.edu> wrote:
>>>>>> q=*:*
>>>>>> 
>>>>>> On Thu, Sep 16, 2010 at 4:39 PM, Christopher Gross <cogr...@gmail.com> 
>>>>>> wrote:
>>>>>>> I have some queries that I'm running against a solr instance (older,
>>>>>>> 1.2 I believe), and I would like to get *all* the results back (and
>>>>>>> not have to put an absurdly large number as a part of the rows
>>>>>>> parameter).
>>>>>>> 
>>>>>>> Is there a way that I can do that?  Any help would be appreciated.
>>>>>>> 
>>>>>>> -- Chris
>>>>>>> 
>>>>>> 
>>>>> 
>>> 
>> 





Reply via email to