org.apache.lucene.search

## Class UsageTrackingQueryCachingPolicy

- java.lang.Object
- - org.apache.lucene.search.UsageTrackingQueryCachingPolicy

- All Implemented Interfaces:
    QueryCachingPolicy

      public final class UsageTrackingQueryCachingPolicy
      extends Object
      implements QueryCachingPolicy

  A `QueryCachingPolicy` that tracks usage statistics of recently-used filters in order to decide on which filters are worth caching. It also uses some heuristics on segments, filters and the doc id sets that they produce in order to cache more aggressively when the execution cost significantly outweighs the caching overhead.
  WARNING: This API is experimental and might change in incompatible ways in the next release.

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from interface org.apache.lucene.search.QueryCachingPolicy

      `QueryCachingPolicy.CacheOnLargeSegments`

  - ### Field Summary

    - ### Fields inherited from interface org.apache.lucene.search.QueryCachingPolicy

      `ALWAYS_CACHE`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `UsageTrackingQueryCachingPolicy()` Create a new instance with an history size of 256.
    `UsageTrackingQueryCachingPolicy(int minIndexSize, float minSizeRatio, int historySize)` Create a new instance.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected int` | `minFrequencyToCache(Query query)` For a given query, return how many times it should appear in the history before being cached.
    `void` | `onUse(Query query)` Callback that is called every time that a cached filter is used.
    `boolean` | `shouldCache(Query query, LeafReaderContext context)` Whether the given `DocIdSet` should be cached on a given segment.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### UsageTrackingQueryCachingPolicy

          public UsageTrackingQueryCachingPolicy(int minIndexSize,
                                         float minSizeRatio,
                                         int historySize)

      Create a new instance.
      Parameters:
        `minIndexSize` - the minimum size of the top-level index
        `minSizeRatio` - the minimum size ratio for segments to be cached, see `QueryCachingPolicy.CacheOnLargeSegments`
        `historySize` - the number of recently used filters to track

    - #### UsageTrackingQueryCachingPolicy

          public UsageTrackingQueryCachingPolicy()

      Create a new instance with an history size of 256.

  - ### Method Detail

    - #### minFrequencyToCache

          protected int minFrequencyToCache(Query query)

      For a given query, return how many times it should appear in the history before being cached.

    - #### onUse

          public void onUse(Query query)

      Description copied from interface: `QueryCachingPolicy`
      Callback that is called every time that a cached filter is used. This is typically useful if the policy wants to track usage statistics in order to make decisions.
      Specified by:
        `onUse` in interface `QueryCachingPolicy`

    - #### shouldCache

          public boolean shouldCache(Query query,
                            LeafReaderContext context)
                              throws IOException

      Description copied from interface: `QueryCachingPolicy`
      Whether the given `DocIdSet` should be cached on a given segment. This method will be called on each leaf context to know if the filter should be cached on this particular leaf. The filter cache will first attempt to load a `DocIdSet` from the cache. If it is not cached yet and this method returns `true` then a cache entry will be generated. Otherwise an uncached set will be returned.
      Specified by:
        `shouldCache` in interface `QueryCachingPolicy`
      Throws:
        `IOException`

Copyright © 2000-2017 Apache Software Foundation. All Rights Reserved.