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

    All Methods Instance Methods Concrete Methods
    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, rewrite, 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 Detail

    - #### TermAutomatonQuery

          public TermAutomatonQuery​(String field)

  - ### Method Detail

    - #### 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`