Package org.apache.lucene.search.uhighlight

# Class PhraseHelper

java.lang.Object
org.apache.lucene.search.uhighlight.PhraseHelper

public class PhraseHelper extends Object
Helps the `FieldOffsetStrategy` with position sensitive queries (e.g. highlight phrases correctly). This is a stateful class holding information about the query, but it can (and is) re-used across highlighting documents. Despite this state, it's immutable after construction.

NOTE: This API is for internal purposes only and might change in incompatible ways in the next release.

## Field Summary

Fields
Modifier and Type
Field
Description
`static final PhraseHelper`
`NONE`

## Constructor Summary

Constructors
Constructor
Description
`PhraseHelper(Query query, String field, Predicate<String> fieldMatcher, Function<SpanQuery,Boolean> rewriteQueryPred, Function<Query,Collection<Query>> preExtractRewriteFunction, boolean ignoreQueriesNeedingRewrite)`
Constructor.

## Method Summary

Modifier and Type
Method
Description
`void`
`createOffsetsEnumsForSpans(LeafReader leafReader, int docId, List<OffsetsEnum> results)`
Given the internal SpanQueries, produce a number of OffsetsEnum into the `results` param.
`BytesRef[]`
`getAllPositionInsensitiveTerms()`
Returns the terms that are position-insensitive (sorted).
`Set<SpanQuery>`
`getSpanQueries()`
`boolean`
`hasPositionSensitivity()`
If there is no position sensitivity then use of the instance of this class can be ignored.
`boolean`
`willRewrite()`
Rewrite is needed for handling a `SpanMultiTermQueryWrapper` (MTQ / wildcards) or some custom things.

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

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

## Field Details

### NONE

public static final PhraseHelper NONE

## Constructor Details

### PhraseHelper

public PhraseHelper(Query query, String field, Predicate<String> fieldMatcher, Function<SpanQuery,Boolean> rewriteQueryPred, Function<Query,Collection<Query>> preExtractRewriteFunction, boolean ignoreQueriesNeedingRewrite)
Constructor. `rewriteQueryPred` is an extension hook to override the default choice of `WeightedSpanTermExtractor.mustRewriteQuery(SpanQuery)`. By default unknown query types are rewritten, so use this to return `Boolean.FALSE` if you know the query doesn't need to be rewritten. Similarly, `preExtractRewriteFunction` is also an extension hook for extract to allow different queries to be set before the `WeightedSpanTermExtractor`'s extraction is invoked. `ignoreQueriesNeedingRewrite` effectively ignores any query clause that needs to be "rewritten", which is usually limited to just a `SpanMultiTermQueryWrapper` but could be other custom ones. `fieldMatcher` The field name predicate to use for extracting the query part that must be highlighted.

## Method Details

### getSpanQueries

public Set<SpanQuery> getSpanQueries()

### hasPositionSensitivity

public boolean hasPositionSensitivity()
If there is no position sensitivity then use of the instance of this class can be ignored.

### willRewrite

public boolean willRewrite()
Rewrite is needed for handling a `SpanMultiTermQueryWrapper` (MTQ / wildcards) or some custom things. When true, the resulting term list will probably be different than what it was known to be initially.

### getAllPositionInsensitiveTerms

public BytesRef[] getAllPositionInsensitiveTerms()
Returns the terms that are position-insensitive (sorted).

### createOffsetsEnumsForSpans

public void createOffsetsEnumsForSpans(LeafReader leafReader, int docId, List<OffsetsEnum> results) throws IOException
Given the internal SpanQueries, produce a number of OffsetsEnum into the `results` param.

Throws:
  `IOException`