I'm working on migrating my code to 2.9. And I'm trying to figure out
what to do. Along the way I found a circular argument in the JavaDoc
for Searcher. BTW, this is not a user question.
My current code calls:
Hits hits = searcher.search(query);
The JavaDoc for it says:
/** Returns the documents matching <code>query</code>.
* @throws BooleanQuery.TooManyClauses
* @deprecated Hits will be removed in Lucene 3.0. Use
* {...@link #search(Query, Filter, int)} instead.
*/
public final Hits search(Query query) throws IOException {
return search(query, (Filter)null);
}
However, search(Query, Filter, int) is not quite appropriate as I need
all hits. I guess I could pass null for filter and MAX_INT.
So, I found search(Query, Collector), which seems most appropriate.
(Not sure though, but I'll figure it out.) However, the JavaDoc for it
says:
/** Lower-level search API.
*
* <p>{...@link Collector#collect(int)} is called for every matching
document.
*
* <p>Applications should only use this if they need <i>all</i> of the
* matching documents. The high-level search API ({...@link
* Searcher#search(Query)}) is usually more efficient, as it skips
* non-high-scoring hits.
* <p>Note: The <code>score</code> passed to this method is a raw
score.
* In other words, the score will not necessarily be a float whose
value is
* between 0 and 1.
* @throws BooleanQuery.TooManyClauses
*/
public void search(Query query, Collector results)
throws IOException {
search(createWeight(query), null, results);
}
But Searcher.search(Query) is deprecated.
So what is the appropriate documentation for getting all "hits"? Seems
to say, "Don't do that"
-- DM