Hi

I wrote last week about the best way to paginate. I will reply back with that email if that ok. This isn't my thread and I don't want to deviate from the original topic.


Cheers

Amin

On 20 Mar 2009, at 17:50, "Uwe Schindler" <[email protected]> wrote:

No, the MultiSearcher also exposes all methods, IndexSearcher/Seracher
exposes (it inherits it from the superclass IndexSearcher). And a call to the collector is never sortable, because the sorting is done *inside* the
hit collector.

Where is your problem with pagination? Normally you choose n to be
paginationoffset+count and then display Scoredocs between n .. n +count-1. There is no TopDocCollector that can only collect results 100 to 109. To display results 100 to 109, you need to collect all results up to 109, so
call with n=110 and then display scoredoc[100]..scoredoc[109]

This is exactly how the old Hits worked.

-----
Uwe Schindler
H.-H.-Meier-Allee 63, D-28213 Bremen
http://www.thetaphi.de
eMail: [email protected]


-----Original Message-----
From: Amin Mohammed-Coleman [mailto:[email protected]]
Sent: Friday, March 20, 2009 6:43 PM
To: [email protected]
Cc: <[email protected]>; <[email protected]>
Subject: Re: Performance tips on searching

Hi

How do you expose a pagination without a customized hit collector. The
multi searcher does not expose a method for hit collector and sort.
Maybe this is not an issue for people ...

Cheers

Amin

On 20 Mar 2009, at 17:25, "Uwe Schindler" <[email protected]> wrote:

Why not use a MultiSearcher an all single searchers? Or a Searcher
on a
MultiReader consisting of all IndexReaders? With that you do not
need to
merge the results.

By the way: instead of creating a TopDocCollector, you could also call
directly,

Searcher.search(Query query, Filter filter, int n, Sort sort)
Searcher.search(Query query, Filter filter, int n)

Filter can be null.

It's shorter and if sorting is also involved, simplier to handle
(you do not
need to switch between ToDocCollector and TopFieldDocCollector).

Important: With Lucene 2.9, the searches will be faster using this API
(because then each index segment uses an own collector).

Uwe


-----
Uwe Schindler
H.-H.-Meier-Allee 63, D-28213 Bremen
http://www.thetaphi.de
eMail: [email protected]

-----Original Message-----
From: Paul Taylor [mailto:[email protected]]
Sent: Friday, March 20, 2009 6:02 PM
To: [email protected]
Subject: Performance tips on searching


Hi, my code receives a search query from the web, there are 5
different
searches that can be searched on - each index is searched with a
single
IndexSearcher referenced in a map. it parses then  performs the
search
and return the best 10 results, with scores readjusted over the
results
so that the best score returns 1.0. Am I performing the optiminal
search
methods to do what I want ?

thanks Paul

      IndexSearcher searcher = searchers.get(indexName);
      QueryParser parser = new QueryParser(indexName, analyzer);
      TopDocCollector collector = new TopDocCollector(10);
      try {
          searcher.search(parser.parse(query), collector);
      }
      catch (ParseException e) {
      }
      Results results = new Results();
      results.totalHits = collector.getTotalHits();
      TopDocs topDocs = collector.topDocs();
      ScoreDoc docs[] = topDocs.scoreDocs;
      float maxScore = topDocs.getMaxScore();
      for (int i = 0; i < docs.length; i++) {
          Result result = new Result();
          result.score = docs[i].score / maxScore;
          result.doc = searcher.doc(docs[i].doc);
          results.results.add(result);
      }
      return results;

--- ------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]



--- ------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to