And is this done trasparently? >From what you say it seems like increasing the max result at every page is not enabling this feature. Simo
On Wednesday, January 20, 2010, Michael Garski <[email protected]> wrote: > We handle paging through large result sets by executing a query for the > maximum number of results, then cache the result set and perform the > pagination through cache without re-execution of the query. > > Michael > > -----Original Message----- > From: Moray McConnachie [mailto:[email protected]] > Sent: Wednesday, January 20, 2010 1:20 AM > To: [email protected] > Subject: Re: What is the right way for getting paged results with Lucene? > > We use a similar method for paging, i.e. we retrieve (pageNo*pageSize) > documents and display the bottom pageSize. > > Unless you added keeping state to searches, you will always need the search > to recalculate all results above your current page in order to determine > where your current page is. > > Depending on your sort order you could modify your query for subsequent pages > using a range query. > > But I would not expect this to be significantly faster necessarily. At least > in our app the extra overhead of last page in 100 000 hits vs. first page is > less than one tenth of a second. Simone is right that in many perhaps most > applications only the first few pages are normally accessed. > > > ------------------ > Moray McConnachie > Director of IT, > Oxford Analytica > > > -----Original Message----- > From: Simone Chiaretta <[email protected]> > Date: Wed, 20 Jan 2010 09:28:39 > To: <[email protected]> > Subject: Re: What is the right way for getting paged results with Lucene? > > Actually I think this is a false problem: > how many times do you go at page 3 of Google? I never go: if I don't > find something useful I just change keywords. > Depending on how many results you have on a page, the last results > might not even be relevant: I've noticed that after a while the score > of docs drops drastically: I filter out docs with a normalized score > lower then 0.2, so I rarely have more than 100 results > > I know I didn't answer your question, actually there is no way afaik > to get paged results, but this how I dealt with "paging" > > simo > > On Wednesday, January 20, 2010, Markus Wolters <[email protected]> wrote: >> Hello, >> >> as you might know, I am pretty new to Lucene and integrating 2.9.1 right now >> into my current ASP.NET MVC project. And it's really working like a charm. >> (Thanks to Michael) >> >> I am curious about if I've understood it right, how to do paging with >> Lucene. I've implemented it like so: >> >> IndexSearcher searcher = Searcher; >> >> // Collect all resulting documents until selected page >> TopScoreDocCollector collector = >> TopScoreDocCollector.create((pageIndex + 1) * pageSize, false); >> searcher.Search(query, collector); >> >> // Get documents for selected page >> TopDocs hits = collector.TopDocs(pageIndex * pageSize, pageSize); >> >> So in case if someone selects one of the last pages of a huge result, Lucene >> would go over a lot results, even that I just need 'pageSize' results, is >> that right? What about the performance or memory usage? I took a sneak peek >> into the Searcher code and believe to have seen that Lucene is creating a >> que as big as documents to get. So in case of a totalhit-count of let's say >> 20000, a pageSize of 20 and selecting the last page (999), even that I >> actually need just the 20 last documents, Lucene is getting (and even >> allocating mememory for?) all 20000 resulting documents. Is that right? >> >> In other terms, I want to do a MySQL-equivalent to SELECT [...] LIMIT >> pageIndex * pageSize, pageSize. >> >> Markus >> >> >> > > -- > Simone Chiaretta > Microsoft MVP ASP.NET - ASPInsider > Blog: http://codeclimber.net.nz > RSS: http://feeds2.feedburner.com/codeclimber > twitter: @simonech > > Any sufficiently advanced technology is indistinguishable from magic > "Life is short, play hard" > > > -- Simone Chiaretta Microsoft MVP ASP.NET - ASPInsider Blog: http://codeclimber.net.nz RSS: http://feeds2.feedburner.com/codeclimber twitter: @simonech Any sufficiently advanced technology is indistinguishable from magic "Life is short, play hard"
