public class CustomUnifiedHighlighter
extends org.apache.lucene.search.uhighlight.UnifiedHighlighter
UnifiedHighlighter
that works for a single field in a single document.
Uses a custom PassageFormatter
. Accepts field content as a constructor
argument, given that loadings field value can be done reading from _source field.
Supports using different BreakIterator
to break the text into fragments. Considers every distinct field
value as a discrete passage for highlighting (unless the whole content needs to be highlighted).
Supports both returning empty snippets and non highlighted snippets when no highlighting can be performed.org.apache.lucene.search.uhighlight.UnifiedHighlighter.HighlightFlag, org.apache.lucene.search.uhighlight.UnifiedHighlighter.LimitedStoredFieldVisitor, org.apache.lucene.search.uhighlight.UnifiedHighlighter.OffsetSource
Constructor and Description |
---|
CustomUnifiedHighlighter(org.apache.lucene.search.IndexSearcher searcher,
org.apache.lucene.analysis.Analyzer analyzer,
org.apache.lucene.search.uhighlight.PassageFormatter passageFormatter,
java.text.BreakIterator breakIterator,
java.lang.String fieldValue,
boolean returnNonHighlightedSnippets)
Creates a new instance of
CustomUnifiedHighlighter |
Modifier and Type | Method and Description |
---|---|
protected java.text.BreakIterator |
getBreakIterator(java.lang.String field) |
protected org.apache.lucene.search.uhighlight.PassageFormatter |
getFormatter(java.lang.String field) |
protected int |
getMaxNoHighlightPassages(java.lang.String field) |
Snippet[] |
highlightField(java.lang.String field,
org.apache.lucene.search.Query query,
int docId,
int maxPassages)
Highlights terms extracted from the provided query within the content of the provided field name
|
protected java.util.List<java.lang.CharSequence[]> |
loadFieldValues(java.lang.String[] fields,
org.apache.lucene.search.DocIdSetIterator docIter,
int cacheCharsThreshold) |
protected java.util.Collection<org.apache.lucene.search.Query> |
preMultiTermQueryRewrite(org.apache.lucene.search.Query query) |
protected java.util.Collection<org.apache.lucene.search.Query> |
preSpanQueryRewrite(org.apache.lucene.search.Query query) |
extractTerms, filterExtractedTerms, getAutomata, getCacheFieldValCharsThreshold, getFieldHighlighter, getFieldInfo, getFieldMatcher, getFlags, getIndexAnalyzer, getIndexSearcher, getMaxLength, getOffsetSource, getOffsetStrategy, getOptimizedOffsetSource, getPhraseHelper, getScorer, highlight, highlight, highlightFields, highlightFields, highlightFields, highlightFieldsAsObjects, highlightWithoutSearcher, newLimitedStoredFieldsVisitor, requiresRewrite, setBreakIterator, setCacheFieldValCharsThreshold, setFieldMatcher, setFormatter, setHandleMultiTermQuery, setHighlightPhrasesStrictly, setMaxLength, setMaxNoHighlightPassages, setScorer, shouldHandleMultiTermQuery, shouldHighlightPhrasesStrictly, shouldPreferPassageRelevancyOverSpeed
public CustomUnifiedHighlighter(org.apache.lucene.search.IndexSearcher searcher, org.apache.lucene.analysis.Analyzer analyzer, org.apache.lucene.search.uhighlight.PassageFormatter passageFormatter, @Nullable java.text.BreakIterator breakIterator, java.lang.String fieldValue, boolean returnNonHighlightedSnippets)
CustomUnifiedHighlighter
analyzer
- the analyzer used for the field at index time, used for multi term queries internallypassageFormatter
- our own CustomPassageFormatter
which generates snippets in forms of Snippet
objectsbreakIterator
- the BreakIterator
to use for dividing text into passages.
If null BreakIterator.getSentenceInstance(Locale)
is used.fieldValue
- the original field values as constructor argument, loaded from the _source field or
the relevant stored field.returnNonHighlightedSnippets
- whether non highlighted snippets should be
returned rather than empty snippets when no highlighting can be performedpublic Snippet[] highlightField(java.lang.String field, org.apache.lucene.search.Query query, int docId, int maxPassages) throws java.io.IOException
java.io.IOException
protected java.util.List<java.lang.CharSequence[]> loadFieldValues(java.lang.String[] fields, org.apache.lucene.search.DocIdSetIterator docIter, int cacheCharsThreshold) throws java.io.IOException
loadFieldValues
in class org.apache.lucene.search.uhighlight.UnifiedHighlighter
java.io.IOException
protected java.text.BreakIterator getBreakIterator(java.lang.String field)
getBreakIterator
in class org.apache.lucene.search.uhighlight.UnifiedHighlighter
protected org.apache.lucene.search.uhighlight.PassageFormatter getFormatter(java.lang.String field)
getFormatter
in class org.apache.lucene.search.uhighlight.UnifiedHighlighter
protected int getMaxNoHighlightPassages(java.lang.String field)
getMaxNoHighlightPassages
in class org.apache.lucene.search.uhighlight.UnifiedHighlighter
protected java.util.Collection<org.apache.lucene.search.Query> preMultiTermQueryRewrite(org.apache.lucene.search.Query query)
preMultiTermQueryRewrite
in class org.apache.lucene.search.uhighlight.UnifiedHighlighter
protected java.util.Collection<org.apache.lucene.search.Query> preSpanQueryRewrite(org.apache.lucene.search.Query query)
preSpanQueryRewrite
in class org.apache.lucene.search.uhighlight.UnifiedHighlighter