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]