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


Reply via email to