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`