You are viewing a plain text version of this content. The canonical link for it is here.
Posted to solr-user@lucene.apache.org by "Hiller, Dean x66079" <de...@broadridge.com> on 2011/06/20 00:02:12 UTC
paging and maintaingin a cursor just like ScrollableResultSet
As you probably know, using Query in hibernate/JPA gets slower and slower each page since it starts all over on the index tree :( WHILE ScrollableResultSet does NOT because the database maintains a cursor into the index that just picks up where it left off so as you go to the next page, next page, the speed stays linearly the same!!!!
Does something like that exist in solr?
I was looking at the api and all the examples are just for returning all results from what I could tell.
I went into Lucene and it looks like it can do it kind of if you code up your own Collector and unfortunately make the Collector.collect(int doc) block on a lock while waiting for the client to ask for the next page(or ask to release the resource since it is complete).
Ie. ScrollableResultSet obviously has to be closed when complete and so would this method as well.
Any ideas on how to achieve this as my client is a computer not a webapp with a human clicking next page and we want the resultset paging to be linear as it really hurts our performance.
Thanks,
Dean
This message and any attachments are intended only for the use of the addressee and
may contain information that is privileged and confidential. If the reader of the
message is not the intended recipient or an authorized representative of the
intended recipient, you are hereby notified that any dissemination of this
communication is strictly prohibited. If you have received this communication in
error, please notify us immediately by e-mail and delete the message and any
attachments from your system.
Re: paging and maintaingin a cursor just like ScrollableResultSet
Posted by Michael Sokolov <so...@ifactory.com>.
One technique I've used to page through huge result sets that could
help: if you have a sortable key (like an id), you can just fetch all
docs, sorted by the key, and then on subsequent page requests use the
last value from the previous page as a filter in a range term like:
id:[<last-id> TO *]
where you substitute for <last-id>
there may be a better approach though...
-Mike
On 6/19/2011 6:02 PM, Hiller, Dean x66079 wrote:
> As you probably know, using Query in hibernate/JPA gets slower and slower each page since it starts all over on the index tree :( WHILE ScrollableResultSet does NOT because the database maintains a cursor into the index that just picks up where it left off so as you go to the next page, next page, the speed stays linearly the same!!!!
>
> Does something like that exist in solr?
>
> I was looking at the api and all the examples are just for returning all results from what I could tell.
>
> I went into Lucene and it looks like it can do it kind of if you code up your own Collector and unfortunately make the Collector.collect(int doc) block on a lock while waiting for the client to ask for the next page(or ask to release the resource since it is complete).
>
> Ie. ScrollableResultSet obviously has to be closed when complete and so would this method as well.
>
> Any ideas on how to achieve this as my client is a computer not a webapp with a human clicking next page and we want the resultset paging to be linear as it really hurts our performance.
>
> Thanks,
> Dean
>
> This message and any attachments are intended only for the use of the addressee and
> may contain information that is privileged and confidential. If the reader of the
> message is not the intended recipient or an authorized representative of the
> intended recipient, you are hereby notified that any dissemination of this
> communication is strictly prohibited. If you have received this communication in
> error, please notify us immediately by e-mail and delete the message and any
> attachments from your system.
>
>
Re: paging and maintaingin a cursor just like ScrollableResultSet
Posted by Erick Erickson <er...@gmail.com>.
See the queryResultCache setting in your solrconfig.xml file. For a
given query it keeps a
(configurable) list of results, you could simply make this very large,
at the usual memory
cost.
Best
Erick
On Sun, Jun 19, 2011 at 6:02 PM, Hiller, Dean x66079
<de...@broadridge.com> wrote:
> As you probably know, using Query in hibernate/JPA gets slower and slower each page since it starts all over on the index tree :( WHILE ScrollableResultSet does NOT because the database maintains a cursor into the index that just picks up where it left off so as you go to the next page, next page, the speed stays linearly the same!!!!
>
> Does something like that exist in solr?
>
> I was looking at the api and all the examples are just for returning all results from what I could tell.
>
> I went into Lucene and it looks like it can do it kind of if you code up your own Collector and unfortunately make the Collector.collect(int doc) block on a lock while waiting for the client to ask for the next page(or ask to release the resource since it is complete).
>
> Ie. ScrollableResultSet obviously has to be closed when complete and so would this method as well.
>
> Any ideas on how to achieve this as my client is a computer not a webapp with a human clicking next page and we want the resultset paging to be linear as it really hurts our performance.
>
> Thanks,
> Dean
>
> This message and any attachments are intended only for the use of the addressee and
> may contain information that is privileged and confidential. If the reader of the
> message is not the intended recipient or an authorized representative of the
> intended recipient, you are hereby notified that any dissemination of this
> communication is strictly prohibited. If you have received this communication in
> error, please notify us immediately by e-mail and delete the message and any
> attachments from your system.
>
>