Package org.apache.lucene.search

# Class QueryVisitor

java.lang.Object
org.apache.lucene.search.QueryVisitor

public abstract class QueryVisitor extends Object
Allows recursion through a query tree

See Also:
  - `Query.visit(QueryVisitor)`

## Field Summary

Fields
Modifier and Type
Field
Description
`static final QueryVisitor`
`EMPTY_VISITOR`
A QueryVisitor implementation that does nothing

## Constructor Summary

Constructors
Constructor
Description
`QueryVisitor()`

## Method Summary

Modifier and Type
Method
Description
`boolean`
`acceptField(String field)`
Whether or not this field is of interest to the visitor
`void`
`consumeTerms(Query query, Term... terms)`
Called by leaf queries that match on specific terms
`void`
`consumeTermsMatching(Query query, String field, Supplier<ByteRunAutomaton> automaton)`
Called by leaf queries that match on a class of terms
`QueryVisitor`
`getSubVisitor(BooleanClause.Occur occur, Query parent)`
Pulls a visitor instance for visiting child clauses of a query
`static QueryVisitor`
`termCollector(Set<Term> termSet)`
Builds a `QueryVisitor` instance that collects all terms that may match a query
`void`
`visitLeaf(Query query)`
Called by leaf queries that do not match on terms

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

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

## Field Details

### EMPTY_VISITOR

public static final QueryVisitor EMPTY_VISITOR
A QueryVisitor implementation that does nothing

## Constructor Details

### QueryVisitor

public QueryVisitor()

## Method Details

### consumeTerms

public void consumeTerms(Query query, Term... terms)
Called by leaf queries that match on specific terms

Parameters:
  `query` - the leaf query
  `terms` - the terms the query will match on

### consumeTermsMatching

public void consumeTermsMatching(Query query, String field, Supplier<ByteRunAutomaton> automaton)
Called by leaf queries that match on a class of terms

Parameters:
  `query` - the leaf query
  `field` - the field queried against
  `automaton` - a supplier for an automaton defining which terms match
WARNING: This API is experimental and might change in incompatible ways in the next release.

### visitLeaf

public void visitLeaf(Query query)
Called by leaf queries that do not match on terms

Parameters:
  `query` - the query

### acceptField

public boolean acceptField(String field)
Whether or not this field is of interest to the visitor

Implement this to avoid collecting terms from heavy queries such as `TermInSetQuery` that are not running on fields of interest

### getSubVisitor

public QueryVisitor getSubVisitor(BooleanClause.Occur occur, Query parent)
Pulls a visitor instance for visiting child clauses of a query

The default implementation returns `this`, unless `occur` is equal to `BooleanClause.Occur.MUST_NOT` in which case it returns `EMPTY_VISITOR`

Parameters:
  `occur` - the relationship between the parent and its children
  `parent` - the query visited

### termCollector

public static QueryVisitor termCollector(Set<Term> termSet)
Builds a `QueryVisitor` instance that collects all terms that may match a query

Parameters:
  `termSet` - a `Set` to add collected terms to