Class TermAutomatonQuery

    • Field Detail

      • BASE_RAM_BYTES

        private static final long BASE_RAM_BYTES
      • field

        private final java.lang.String field
      • termToID

        private final java.util.Map<BytesRef,​java.lang.Integer> termToID
      • anyTermID

        private int anyTermID
    • Constructor Detail

      • TermAutomatonQuery

        public TermAutomatonQuery​(java.lang.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,
                                  java.lang.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 java.io.IOException
        Description copied from class: Query
        Expert: Constructs an appropriate Weight implementation for this query.

        Only implemented by primitive queries, which re-write to themselves.

        Overrides:
        createWeight in class Query
        scoreMode - How the produced scorers will be consumed.
        boost - The boost that is propagated by the parent queries.
        Throws:
        java.io.IOException
      • toString

        public java.lang.String toString​(java.lang.String field)
        Description copied from class: Query
        Prints a query to a string, with field assumed to be the default field and omitted.
        Specified by:
        toString in class Query
      • getTermID

        private int getTermID​(BytesRef term)
      • hashCode

        public int hashCode()
        Description copied from class: Query
        Override and implement query hash code properly in a subclass. This is required so that QueryCache works properly.
        Specified by:
        hashCode in class Query
        See Also:
        Query.equals(Object)
      • ramBytesUsed

        public long ramBytesUsed()
        Description copied from interface: Accountable
        Return the memory usage of this object in bytes. Negative values are illegal.
        Specified by:
        ramBytesUsed in interface Accountable
      • toDot

        public java.lang.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 java.io.IOException
        Description copied from class: Query
        Expert: called to re-write queries into primitive queries. For example, a PrefixQuery will be rewritten into a BooleanQuery that consists of TermQuerys.

        Callers are expected to call rewrite multiple times if necessary, until the rewritten query is the same as the original query.

        The rewrite process may be able to make use of IndexSearcher's executor and be executed in parallel if the executor is provided.

        However, if any of the intermediary queries do not satisfy the new API, parallel rewrite is not possible for any subsequent sub-queries. To take advantage of this API, the entire query tree must override this method.

        Overrides:
        rewrite in class Query
        Throws:
        java.io.IOException
        See Also:
        IndexSearcher.rewrite(Query)
      • visit

        public void visit​(QueryVisitor visitor)
        Description copied from class: Query
        Recurse through the query tree, visiting any child queries.
        Specified by:
        visit in class Query
        Parameters:
        visitor - a QueryVisitor to be called by each query in the tree