If you want to keep every single hit, which is very dangerous for a large index, you should make a new collector.

Here's an example (pulled from upcoming LIA revision):

public class AllDocCollector extends HitCollector {
  List<ScoreDoc> docs = new ArrayList<ScoreDoc>();
  public void collect(int doc, float score) {
    if (score > 0.0f) {
      docs.add(new ScoreDoc(doc, score));
    }
  }

  public void reset() {
    docs.clear();
  }

  public List<ScoreDoc> getHits() {
    return docs;
  }
}

If you need the results sorted then you should do the sort at the end.

Mike

David Massart wrote:

Thanks guys.
Just looking at the examples and I wonder if there is a means to directly get the total number of hits. Or is it always necessary to search for a few top docs, get the the total number of hits and then create a new collector
to get all the results?

TopDocCollector collector = new TopDocCollector(5);

searcher.search(query, collector);

int numTotalHits = collector.getTotalHits();

collector = new TopDocCollector(numTotalHits);

searcher.search(query, collector);

ScoreDoc[] hits = collector.topDocs().scoreDocs;

If the later is true, is the code above the best way to do this?

Cheers,

David

On Wed, Oct 15, 2008 at 5:16 AM, Chris Hostetter
<[EMAIL PROTECTED]>wrote:


: Could one of you point me to an example of code for querying without
using
: the deprecated class Hits ?

The demo code included with Lucene releases was updated in Lucene 2.4 so
that it does not use the Hits class.

-Hoss


---------------------------------------------------------------------
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