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, shouldPreferPassageRelevancyOverSpeedpublic 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)
CustomUnifiedHighlighteranalyzer - 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.IOExceptionprotected 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.UnifiedHighlighterjava.io.IOExceptionprotected java.text.BreakIterator getBreakIterator(java.lang.String field)
getBreakIterator in class org.apache.lucene.search.uhighlight.UnifiedHighlighterprotected org.apache.lucene.search.uhighlight.PassageFormatter getFormatter(java.lang.String field)
getFormatter in class org.apache.lucene.search.uhighlight.UnifiedHighlighterprotected int getMaxNoHighlightPassages(java.lang.String field)
getMaxNoHighlightPassages in class org.apache.lucene.search.uhighlight.UnifiedHighlighterprotected java.util.Collection<org.apache.lucene.search.Query> preMultiTermQueryRewrite(org.apache.lucene.search.Query query)
preMultiTermQueryRewrite in class org.apache.lucene.search.uhighlight.UnifiedHighlighterprotected java.util.Collection<org.apache.lucene.search.Query> preSpanQueryRewrite(org.apache.lucene.search.Query query)
preSpanQueryRewrite in class org.apache.lucene.search.uhighlight.UnifiedHighlighter