Package org.apache.lucene.sandbox.search

# Class TermAutomatonQuery

java.lang.Object
org.apache.lucene.search.Query
org.apache.lucene.sandbox.search.TermAutomatonQuery

All Implemented Interfaces:
  `Accountable`

public class TermAutomatonQuery extends Query implements Accountable
A proximity query that lets you express an automaton, whose transitions are terms, to match documents. This is a generalization of other proximity queries like `PhraseQuery`, `MultiPhraseQuery` and `SpanNearQuery`. It is likely slow, since it visits any document having any of the terms (i.e. it acts like a disjunction, not a conjunction like `PhraseQuery`), and then it must merge-sort all positions within each document to test whether/how many times the automaton matches.

After creating the query, use `createState()`, `setAccept(int, boolean)`, `addTransition(int, int, java.lang.String)` and `addAnyTransition(int, int)` to build up the automaton. Once you are done, call `finish()` and then execute the query.

This code is very new and likely has exciting bugs!

WARNING: This API is experimental and might change in incompatible ways in the next release.

- ## Field Summary

  ### Fields inherited from interface org.apache.lucene.util.Accountable

  `NULL_ACCOUNTABLE`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `TermAutomatonQuery(String field)`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `addAnyTransition(int source, int dest)`
  Adds a transition matching any term.
  `void`
  `addTransition(int source, int dest, String term)`
  Adds a transition to the automaton.
  `void`
  `addTransition(int source, int dest, BytesRef term)`
  Adds a transition to the automaton.
  `int`
  `createState()`
  Returns a new state; state 0 is always the initial state.
  `Weight`
  `createWeight(IndexSearcher searcher, ScoreMode scoreMode, float boost)`
  `boolean`
  `equals(Object other)`
  Returns true iff `o` is equal to this.
  `void`
  `finish()`
  Call this once you are done adding states/transitions.
  `void`
  `finish(int determinizeWorkLimit)`
  Call this once you are done adding states/transitions.
  `int`
  `hashCode()`
  `long`
  `ramBytesUsed()`
  `Query`
  `rewrite(IndexSearcher indexSearcher)`
  `void`
  `setAccept(int state, boolean accept)`
  Marks the specified state as accept or not.
  `String`
  `toDot()`
  Returns the dot (graphviz) representation of this automaton.
  `String`
  `toString(String field)`
  `void`
  `visit(QueryVisitor visitor)`

  ### Methods inherited from class org.apache.lucene.search.Query

  `classHash, sameClassAs, toString`

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

  `clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

  ### Methods inherited from interface org.apache.lucene.util.Accountable

  `getChildResources`

- ## Constructor Details

  - ### TermAutomatonQuery

    public TermAutomatonQuery(String field)

- ## Method Details

  - ### createState

    public int createState()
    Returns a new state; state 0 is always the initial state.

  - ### setAccept

    public void setAccept(int state, boolean accept)
    Marks the specified state as accept or not.

  - ### addTransition

    public void addTransition(int source, int dest, String term)
    Adds a transition to the automaton.

  - ### addTransition

    public void addTransition(int source, int dest, BytesRef term)
    Adds a transition to the automaton.

  - ### addAnyTransition

    public void addAnyTransition(int source, int dest)
    Adds a transition matching any term.

  - ### finish

    public void finish()
    Call this once you are done adding states/transitions.

  - ### finish

    public void finish(int determinizeWorkLimit)
    Call this once you are done adding states/transitions.
    Parameters:
      `determinizeWorkLimit` - Maximum effort to spend determinizing the automaton. Higher numbers allow this operation to consume more memory but allow more complex automatons. Use `Operations.DEFAULT_DETERMINIZE_WORK_LIMIT` as a decent default if you don't otherwise know what to specify.

  - ### createWeight

    public Weight createWeight(IndexSearcher searcher, ScoreMode scoreMode, float boost) throws IOException
    Overrides:
      `createWeight` in class `Query`
    Throws:
      `IOException`

  - ### toString

    public String toString(String field)
    Specified by:
      `toString` in class `Query`

  - ### equals

    public boolean equals(Object other)
    Returns true iff `o` is equal to this.
    Specified by:
      `equals` in class `Query`

  - ### hashCode

    public int hashCode()
    Specified by:
      `hashCode` in class `Query`

  - ### ramBytesUsed

    public long ramBytesUsed()
    Specified by:
      `ramBytesUsed` in interface `Accountable`

  - ### toDot

    public String toDot()
    Returns the dot (graphviz) representation of this automaton. This is extremely useful for visualizing the automaton.

  - ### rewrite

    public Query rewrite(IndexSearcher indexSearcher) throws IOException
    Overrides:
      `rewrite` in class `Query`
    Throws:
      `IOException`

  - ### visit

    public void visit(QueryVisitor visitor)
    Specified by:
      `visit` in class `Query`