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 and Description
    --- | ---
    `static PhraseHelper` | `NONE`

  - ### Constructor Summary

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

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and 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 Detail

    - #### NONE

          public static final PhraseHelper NONE

  - ### Constructor Detail

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

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

Copyright © 2000-2022 Apache Software Foundation. All Rights Reserved.