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 Details

  • 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