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`