Exemplo n.º 1
0
 /**
  * Lower-level suggest API. Collects completion hits through <code>collector</code> for <code>
  * query</code>.
  *
  * <p>{@link TopSuggestDocsCollector#collect(int, CharSequence, CharSequence, float)} is called
  * for every matching completion hit.
  */
 public void suggest(CompletionQuery query, TopSuggestDocsCollector collector) throws IOException {
   // TODO use IndexSearcher.rewrite instead
   // have to implement equals() and hashCode() in CompletionQuerys and co
   query = (CompletionQuery) query.rewrite(getIndexReader());
   Weight weight = query.createWeight(this, collector.needsScores());
   for (LeafReaderContext context : getIndexReader().leaves()) {
     BulkScorer scorer = weight.bulkScorer(context);
     if (scorer != null) {
       try {
         scorer.score(collector.getLeafCollector(context), context.reader().getLiveDocs());
       } catch (CollectionTerminatedException e) {
         // collection was terminated prematurely
         // continue with the following leaf
       }
     }
   }
 }
Exemplo n.º 2
0
 /** Returns top <code>n</code> completion hits for <code>query</code> */
 public TopSuggestDocs suggest(CompletionQuery query, int n) throws IOException {
   TopSuggestDocsCollector collector = new TopSuggestDocsCollector(n);
   suggest(query, collector);
   return collector.get();
 }