org.apache.lucene.search

## Class MultiPhraseQuery

- java.lang.Object
- - org.apache.lucene.search.Query
  - - org.apache.lucene.search.MultiPhraseQuery

    public class MultiPhraseQuery
    extends Query

A generalized version of `PhraseQuery`, with the possibility of adding more than one term at the same position that are treated as a disjunction (OR). To use this class to search for the phrase "Microsoft app*" first create a Builder and use `MultiPhraseQuery.Builder.add(Term)` on the term "microsoft" (assuming lowercase analysis), then find all terms that have "app" as prefix using `LeafReader.terms(String)`, seeking to "app" then iterating and collecting terms until there is no longer that prefix, and finally use `MultiPhraseQuery.Builder.add(Term[])` to add them. `MultiPhraseQuery.Builder.build()` returns the fully constructed (and immutable) MultiPhraseQuery.

### Nested Class Summary

Nested Classes
`static class` `MultiPhraseQuery.Builder` A builder for multi-phrase queries

### Method Summary

All Methods Instance Methods Concrete Methods
`Weight` `createWeight(IndexSearcher searcher, ScoreMode scoreMode, float boost)` Expert: Constructs an appropriate Weight implementation for this query.
`boolean` `equals(Object other)` Returns true if `o` is equal to this.
`int[]` `getPositions()` Returns the relative positions of terms in this phrase.
`int` `getSlop()` Sets the phrase slop for this query.
`Term[][]` `getTermArrays()` Returns the arrays of arrays of terms in the multi-phrase.
`int` `hashCode()` Returns a hash code value for this object.
`Query` `rewrite(IndexReader reader)` Expert: called to re-write queries into primitive queries.
`String` `toString(String f)` Prints a user-readable version of this query.
`void` `visit(QueryVisitor visitor)` Recurse through the query tree, visiting any child queries

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

### Method Detail

#### getSlop

    public int getSlop()

Sets the phrase slop for this query.

See Also:
  `PhraseQuery.getSlop()`

#### getTermArrays

    public Term[][] getTermArrays()

Returns the arrays of arrays of terms in the multi-phrase. Do not modify!

#### getPositions

    public int[] getPositions()

Returns the relative positions of terms in this phrase. Do not modify!

#### rewrite

    public Query rewrite(IndexReader reader)
                  throws 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.

Overrides:
  `rewrite` in class `Query`
Throws:
  `IOException`

#### visit

    public void visit(QueryVisitor visitor)

Description copied from class: `Query`
Recurse through the query tree, visiting any child queries

Overrides:
  `visit` in class `Query`
Parameters:
  `visitor` - a QueryVisitor to be called by each query in the tree

#### createWeight

    public Weight createWeight(IndexSearcher searcher,
                               ScoreMode scoreMode,
                               float boost)
                        throws 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:
  `IOException`

#### toString

    public final String toString(String f)

Prints a user-readable version of this query.

Specified by:
  `toString` in class `Query`

#### equals

    public boolean equals(Object other)

Returns true if `o` is equal to this.

Specified by:
  `equals` in class `Query`
See Also:
  `Query.sameClassAs(Object)`, `Query.classHash()`

#### hashCode

    public int hashCode()

Returns a hash code value for this object.

Specified by:
  `hashCode` in class `Query`
See Also:
  `Query.equals(Object)`