Package org.apache.lucene.monitor

# Class Monitor

java.lang.Object
org.apache.lucene.monitor.Monitor

All Implemented Interfaces:
  `Closeable`, `AutoCloseable`

public class Monitor extends Object implements Closeable
A Monitor contains a set of `Query` objects with associated IDs, and efficiently matches them against sets of `Document` objects.

- ## Nested Class Summary

  Nested Classes
  Modifier and Type
  Class
  Description
  `static final record`
  `Monitor.QueryCacheStats`
  Statistics for the query cache and query index

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `protected final Presearcher`
  `presearcher`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `Monitor(Analyzer analyzer)`
  Create a non-persistent Monitor instance with the default term-filtering Presearcher
  `Monitor(Analyzer analyzer, MonitorConfiguration config)`
  Create a new Monitor instance with a specific configuration
  `Monitor(Analyzer analyzer, Presearcher presearcher)`
  Create a new non-persistent Monitor instance
  `Monitor(Analyzer analyzer, Presearcher presearcher, MonitorConfiguration configuration)`
  Create a new Monitor instance

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `addQueryIndexUpdateListener(MonitorUpdateListener listener)`
  Register a `MonitorUpdateListener` that will be notified whenever changes are made to the Monitor's queryindex
  `void`
  `clear()`
  Delete all queries from the monitor
  `void`
  `close()`
  `<T extends QueryMatch>
  PresearcherMatches<T>`
  `debug(Document[] docs, MatcherFactory<T> factory)`
  Match a DocumentBatch against the queries stored in the Monitor, also returning information about which queries were selected by the presearcher, and why.
  `<T extends QueryMatch>
  PresearcherMatches<T>`
  `debug(Document doc, MatcherFactory<T> factory)`
  Match a single `Document` against the queries stored in the Monitor, also returning information about which queries were selected by the presearcher, and why.
  `void`
  `deleteById(String... queryIds)`
  Delete queries from the monitor by ID
  `void`
  `deleteById(List<String> queryIds)`
  Delete queries from the monitor by ID
  `int`
  `getDisjunctCount()`
  `MonitorQuery`
  `getQuery(String queryId)`
  Get the MonitorQuery for a given query id
  `Monitor.QueryCacheStats`
  `getQueryCacheStats()`
  `int`
  `getQueryCount()`
  `Set<String>`
  `getQueryIds()`
  `<T extends QueryMatch>
  MultiMatchingQueries<T>`
  `match(Document[] docs, MatcherFactory<T> factory)`
  Match an array of `Document`s against the queryindex, calling a `CandidateMatcher` produced by the supplied `MatcherFactory` for each possible matching query.
  `<T extends QueryMatch>
  MatchingQueries<T>`
  `match(Document doc, MatcherFactory<T> factory)`
  Match a single `Document` against the queryindex, calling a `CandidateMatcher` produced by the supplied `MatcherFactory` for each possible matching query.
  `void`
  `purgeCache()`
  Remove unused queries from the query cache.
  `void`
  `register(Iterable<MonitorQuery> queries)`
  Add new queries to the monitor
  `void`
  `register(MonitorQuery... queries)`
  Add new queries to the monitor

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

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

- ## Field Details

  - ### presearcher

    protected final Presearcher presearcher

- ## Constructor Details

  - ### Monitor

    public Monitor(Analyzer analyzer) throws IOException
    Create a non-persistent Monitor instance with the default term-filtering Presearcher
    Parameters:
      `analyzer` - to analyze `Document`s at match time
    Throws:
      `IOException`

  - ### Monitor

    public Monitor(Analyzer analyzer, Presearcher presearcher) throws IOException
    Create a new non-persistent Monitor instance
    Parameters:
      `analyzer` - to analyze `Document`s at match time
      `presearcher` - the presearcher to use
    Throws:
      `IOException`

  - ### Monitor

    public Monitor(Analyzer analyzer, MonitorConfiguration config) throws IOException
    Create a new Monitor instance with a specific configuration
    Parameters:
      `analyzer` - to analyze `Document`s at match time
      `config` - the configuration
    Throws:
      `IOException`

  - ### Monitor

    public Monitor(Analyzer analyzer, Presearcher presearcher, MonitorConfiguration configuration) throws IOException
    Create a new Monitor instance
    Parameters:
      `analyzer` - to analyze `Document`s at match time
      `presearcher` - the presearcher to use
      `configuration` - the configuration
    Throws:
      `IOException`

- ## Method Details

  - ### addQueryIndexUpdateListener

    public void addQueryIndexUpdateListener(MonitorUpdateListener listener)
    Register a `MonitorUpdateListener` that will be notified whenever changes are made to the Monitor's queryindex
    Parameters:
      `listener` - listener to register

  - ### getQueryCacheStats

    public Monitor.QueryCacheStats getQueryCacheStats() throws IOException
    Returns:
      Statistics for the internal query index and cache
    Throws:
      `IOException`

  - ### purgeCache

    public void purgeCache() throws IOException
    Remove unused queries from the query cache.

    This is normally called from a background thread at a rate set by configurePurgeFrequency().

    When Monitor is in read-only mode, cache is NEVER purged automatically you MUST call it when you want new changes.

    Throws:
      `IOException` - on IO errors

  - ### close

    public void close() throws IOException
    Specified by:
      `close` in interface `AutoCloseable`
    Specified by:
      `close` in interface `Closeable`
    Throws:
      `IOException`

  - ### register

    public void register(Iterable<MonitorQuery> queries) throws IOException
    Add new queries to the monitor
    Parameters:
      `queries` - the MonitorQueries to add
    Throws:
      `IOException`

  - ### register

    public void register(MonitorQuery... queries) throws IOException
    Add new queries to the monitor
    Parameters:
      `queries` - the MonitorQueries to add
    Throws:
      `IOException` - on IO errors

  - ### deleteById

    public void deleteById(List<String> queryIds) throws IOException
    Delete queries from the monitor by ID
    Parameters:
      `queryIds` - the IDs to delete
    Throws:
      `IOException` - on IO errors

  - ### deleteById

    public void deleteById(String... queryIds) throws IOException
    Delete queries from the monitor by ID
    Parameters:
      `queryIds` - the IDs to delete
    Throws:
      `IOException` - on IO errors

  - ### clear

    public void clear() throws IOException
    Delete all queries from the monitor
    Throws:
      `IOException` - on IO errors

  - ### match

    public <T extends QueryMatch> MultiMatchingQueries<T> match(Document[] docs, MatcherFactory<T> factory) throws IOException
    Match an array of `Document`s against the queryindex, calling a `CandidateMatcher` produced by the supplied `MatcherFactory` for each possible matching query.
    Type Parameters:
      `T` - the type of `QueryMatch` to return
    Parameters:
      `docs` - the DocumentBatch to match
      `factory` - a `MatcherFactory` to use to create a `CandidateMatcher` for the match run
    Returns:
      a `MatchingQueries` object summarizing the match run.
    Throws:
      `IOException` - on IO errors

  - ### match

    public <T extends QueryMatch> MatchingQueries<T> match(Document doc, MatcherFactory<T> factory) throws IOException
    Match a single `Document` against the queryindex, calling a `CandidateMatcher` produced by the supplied `MatcherFactory` for each possible matching query.
    Type Parameters:
      `T` - the type of `QueryMatch` to return
    Parameters:
      `doc` - the InputDocument to match
      `factory` - a `MatcherFactory` to use to create a `CandidateMatcher` for the match run
    Returns:
      a `MatchingQueries` object summarizing the match run.
    Throws:
      `IOException` - on IO errors

  - ### getQuery

    public MonitorQuery getQuery(String queryId) throws IOException
    Get the MonitorQuery for a given query id
    Parameters:
      `queryId` - the id of the query to get
    Returns:
      the MonitorQuery stored for this id, or null if not found
    Throws:
      `IOException` - on IO errors
      `IllegalStateException` - if queries are not stored in the queryindex

  - ### getDisjunctCount

    public int getDisjunctCount() throws IOException
    Returns:
      the number of queries (after decomposition) stored in this Monitor
    Throws:
      `IOException`

  - ### getQueryCount

    public int getQueryCount() throws IOException
    Returns:
      the number of queries stored in this Monitor
    Throws:
      `IOException` - on IO errors

  - ### getQueryIds

    public Set<String> getQueryIds() throws IOException
    Returns:
      the set of query ids of the queries stored in this Monitor
    Throws:
      `IOException` - on IO errors

  - ### debug

    public <T extends QueryMatch> PresearcherMatches<T> debug(Document[] docs, MatcherFactory<T> factory) throws IOException
    Match a DocumentBatch against the queries stored in the Monitor, also returning information about which queries were selected by the presearcher, and why.
    Type Parameters:
      `T` - the type of QueryMatch produced by the CandidateMatcher
    Parameters:
      `docs` - a DocumentBatch to match against the index
      `factory` - a `MatcherFactory` to use to create a `CandidateMatcher` for the match run
    Returns:
      a `PresearcherMatches` object containing debug information
    Throws:
      `IOException` - on IO errors

  - ### debug

    public <T extends QueryMatch> PresearcherMatches<T> debug(Document doc, MatcherFactory<T> factory) throws IOException
    Match a single `Document` against the queries stored in the Monitor, also returning information about which queries were selected by the presearcher, and why.
    Type Parameters:
      `T` - the type of QueryMatch produced by the CandidateMatcher
    Parameters:
      `doc` - an InputDocument to match against the index
      `factory` - a `MatcherFactory` to use to create a `CandidateMatcher` for the match run
    Returns:
      a `PresearcherMatches` object containing debug information
    Throws:
      `IOException` - on IO errors