Class LuceneOptimizedIndexSearcher

java.lang.Object
org.apache.lucene.search.IndexSearcher
com.apple.foundationdb.record.lucene.search.LuceneOptimizedIndexSearcher

public class LuceneOptimizedIndexSearcher extends org.apache.lucene.search.IndexSearcher
This class optimizes the current IndexSearcher and attempts to perform operations in parallel in places where data access can occur.
  • Nested Class Summary

    Nested classes/interfaces inherited from class org.apache.lucene.search.IndexSearcher

    org.apache.lucene.search.IndexSearcher.LeafSlice
  • Field Summary

    Fields inherited from class org.apache.lucene.search.IndexSearcher

    leafContexts, readerContext
  • Constructor Summary

    Constructors
    Constructor
    Description
    LuceneOptimizedIndexSearcher(org.apache.lucene.index.IndexReader r)
     
    LuceneOptimizedIndexSearcher(org.apache.lucene.index.IndexReader r, Executor executor)
     
  • Method Summary

    Modifier and Type
    Method
    Description
    org.apache.lucene.search.Weight
    createWeight(org.apache.lucene.search.Query query, org.apache.lucene.search.ScoreMode scoreMode, float boost)
    This overridden call will attempt to cache the relevant terms low level blocks in the case where we need scores.
    void
    search(org.apache.lucene.search.Query query, org.apache.lucene.search.Collector results)
    Lower-level search API.
    <C extends org.apache.lucene.search.Collector, T>
    T
    search(org.apache.lucene.search.Query query, org.apache.lucene.search.CollectorManager<C,T> collectorManager)
    Lower-level search API.

    Methods inherited from class org.apache.lucene.search.IndexSearcher

    collectionStatistics, count, doc, doc, doc, explain, explain, getDefaultQueryCache, getDefaultQueryCachingPolicy, getDefaultSimilarity, getExecutor, getIndexReader, getQueryCache, getQueryCachingPolicy, getSimilarity, getSlices, getTopReaderContext, rewrite, search, search, search, search, searchAfter, searchAfter, searchAfter, setDefaultQueryCache, setDefaultQueryCachingPolicy, setQueryCache, setQueryCachingPolicy, setSimilarity, slices, termStatistics, termStatistics, toString

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
  • Constructor Details

    • LuceneOptimizedIndexSearcher

      public LuceneOptimizedIndexSearcher(org.apache.lucene.index.IndexReader r)
    • LuceneOptimizedIndexSearcher

      public LuceneOptimizedIndexSearcher(org.apache.lucene.index.IndexReader r, Executor executor)
  • Method Details

    • search

      public void search(org.apache.lucene.search.Query query, org.apache.lucene.search.Collector results) throws IOException
      Lower-level search API.

      LeafCollector.collect(int) is called for every matching document.

      Overrides:
      search in class org.apache.lucene.search.IndexSearcher
      Throws:
      org.apache.lucene.search.BooleanQuery.TooManyClauses - If a query would exceed BooleanQuery.getMaxClauseCount() clauses.
      IOException
    • search

      public <C extends org.apache.lucene.search.Collector, T> T search(org.apache.lucene.search.Query query, org.apache.lucene.search.CollectorManager<C,T> collectorManager) throws IOException
      Lower-level search API. This is optimized into an attempt to parallelize database access in FDB, for each collector in collectorManager.

      LeafCollector.collect(int) is called for every document.

      NOTE: this method executes the searches on all given leaves exclusively. To search across all the searchers leaves use IndexSearcher.leafContexts.

      most of this code is copied verbatim from IndexSearcher.search(Query, CollectorManager), the refactored code is, as explained above, takes care of parallelizing database access in FDB for each collector in collectorManager.

      Overrides:
      search in class org.apache.lucene.search.IndexSearcher
      Parameters:
      query - the search query
      collectorManager - manager of collectors that receive hits
      Throws:
      IOException
    • createWeight

      public org.apache.lucene.search.Weight createWeight(org.apache.lucene.search.Query query, org.apache.lucene.search.ScoreMode scoreMode, float boost) throws IOException
      This overridden call will attempt to cache the relevant terms low level blocks in the case where we need scores.
      Overrides:
      createWeight in class org.apache.lucene.search.IndexSearcher
      Parameters:
      query - query implementation
      scoreMode - mode for scoring
      boost - boost for scores
      Returns:
      Weight of query
      Throws:
      IOException - IOException