Class Highlighter
- java.lang.Object
-
- org.apache.lucene.search.highlight.Highlighter
-
public class Highlighter extends java.lang.Object
Class used to markup highlighted terms found in the best sections of a text, using configurableFragmenter
,Scorer
,Formatter
,Encoder
and tokenizers.
-
-
Field Summary
Fields Modifier and Type Field Description static int
DEFAULT_MAX_CHARS_TO_ANALYZE
-
Constructor Summary
Constructors Constructor Description Highlighter(Formatter formatter, Encoder encoder, Scorer fragmentScorer)
Highlighter(Formatter formatter, Scorer fragmentScorer)
Highlighter(Scorer fragmentScorer)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.lang.String
getBestFragment(Analyzer analyzer, java.lang.String fieldName, java.lang.String text)
Highlights chosen terms in a text, extracting the most relevant section.java.lang.String
getBestFragment(TokenStream tokenStream, java.lang.String text)
Highlights chosen terms in a text, extracting the most relevant section.java.lang.String[]
getBestFragments(Analyzer analyzer, java.lang.String fieldName, java.lang.String text, int maxNumFragments)
Highlights chosen terms in a text, extracting the most relevant sections.java.lang.String[]
getBestFragments(TokenStream tokenStream, java.lang.String text, int maxNumFragments)
Highlights chosen terms in a text, extracting the most relevant sections.java.lang.String
getBestFragments(TokenStream tokenStream, java.lang.String text, int maxNumFragments, java.lang.String separator)
Highlights terms in the text , extracting the most relevant sections and concatenating the chosen fragments with a separator (typically "...").TextFragment[]
getBestTextFragments(TokenStream tokenStream, java.lang.String text, boolean mergeContiguousFragments, int maxNumFragments)
Low level api to get the most relevant (formatted) sections of the document.Encoder
getEncoder()
Scorer
getFragmentScorer()
int
getMaxDocCharsToAnalyze()
Fragmenter
getTextFragmenter()
void
setEncoder(Encoder encoder)
void
setFragmentScorer(Scorer scorer)
void
setMaxDocCharsToAnalyze(int maxDocCharsToAnalyze)
void
setTextFragmenter(Fragmenter fragmenter)
-
-
-
Field Detail
-
DEFAULT_MAX_CHARS_TO_ANALYZE
public static final int DEFAULT_MAX_CHARS_TO_ANALYZE
- See Also:
- Constant Field Values
-
-
Method Detail
-
getBestFragment
public final java.lang.String getBestFragment(Analyzer analyzer, java.lang.String fieldName, java.lang.String text) throws java.io.IOException, InvalidTokenOffsetsException
Highlights chosen terms in a text, extracting the most relevant section. This is a convenience method that callsgetBestFragment(TokenStream, String)
- Parameters:
analyzer
- the analyzer that will be used to splittext
into chunkstext
- text to highlight terms infieldName
- Name of field used to influence analyzer's tokenization policy- Returns:
- highlighted text fragment or null if no terms found
- Throws:
InvalidTokenOffsetsException
- thrown if any token's endOffset exceeds the provided text's lengthjava.io.IOException
-
getBestFragment
public final java.lang.String getBestFragment(TokenStream tokenStream, java.lang.String text) throws java.io.IOException, InvalidTokenOffsetsException
Highlights chosen terms in a text, extracting the most relevant section. The document text is analysed in chunks to record hit statistics across the document. After accumulating stats, the fragment with the highest score is returned- Parameters:
tokenStream
- a stream of tokens identified in the text parameter, including offset information. This is typically produced by an analyzer re-parsing a document's text. Some work may be done on retrieving TokenStreams more efficiently by adding support for storing original text position data in the Lucene index but this support is not currently available (as of Lucene 1.4 rc2).text
- text to highlight terms in- Returns:
- highlighted text fragment or null if no terms found
- Throws:
InvalidTokenOffsetsException
- thrown if any token's endOffset exceeds the provided text's lengthjava.io.IOException
-
getBestFragments
public final java.lang.String[] getBestFragments(Analyzer analyzer, java.lang.String fieldName, java.lang.String text, int maxNumFragments) throws java.io.IOException, InvalidTokenOffsetsException
Highlights chosen terms in a text, extracting the most relevant sections. This is a convenience method that callsgetBestFragments(TokenStream, String, int)
- Parameters:
analyzer
- the analyzer that will be used to splittext
into chunksfieldName
- the name of the field being highlighted (used by analyzer)text
- text to highlight terms inmaxNumFragments
- the maximum number of fragments.- Returns:
- highlighted text fragments (between 0 and maxNumFragments number of fragments)
- Throws:
InvalidTokenOffsetsException
- thrown if any token's endOffset exceeds the provided text's lengthjava.io.IOException
-
getBestFragments
public final java.lang.String[] getBestFragments(TokenStream tokenStream, java.lang.String text, int maxNumFragments) throws java.io.IOException, InvalidTokenOffsetsException
Highlights chosen terms in a text, extracting the most relevant sections. The document text is analysed in chunks to record hit statistics across the document. After accumulating stats, the fragments with the highest scores are returned as an array of strings in order of score (contiguous fragments are merged into one in their original order to improve readability)- Parameters:
text
- text to highlight terms inmaxNumFragments
- the maximum number of fragments.- Returns:
- highlighted text fragments (between 0 and maxNumFragments number of fragments)
- Throws:
InvalidTokenOffsetsException
- thrown if any token's endOffset exceeds the provided text's lengthjava.io.IOException
-
getBestTextFragments
public final TextFragment[] getBestTextFragments(TokenStream tokenStream, java.lang.String text, boolean mergeContiguousFragments, int maxNumFragments) throws java.io.IOException, InvalidTokenOffsetsException
Low level api to get the most relevant (formatted) sections of the document. This method has been made public to allow visibility of score information held in TextFragment objects. Thanks to Jason Calabrese for help in redefining the interface.- Throws:
java.io.IOException
- If there is a low-level I/O errorInvalidTokenOffsetsException
- thrown if any token's endOffset exceeds the provided text's length
-
getBestFragments
public final java.lang.String getBestFragments(TokenStream tokenStream, java.lang.String text, int maxNumFragments, java.lang.String separator) throws java.io.IOException, InvalidTokenOffsetsException
Highlights terms in the text , extracting the most relevant sections and concatenating the chosen fragments with a separator (typically "..."). The document text is analysed in chunks to record hit statistics across the document. After accumulating stats, the fragments with the highest scores are returned in order as "separator" delimited strings.- Parameters:
text
- text to highlight terms inmaxNumFragments
- the maximum number of fragments.separator
- the separator used to intersperse the document fragments (typically "...")- Returns:
- highlighted text
- Throws:
InvalidTokenOffsetsException
- thrown if any token's endOffset exceeds the provided text's lengthjava.io.IOException
-
getMaxDocCharsToAnalyze
public int getMaxDocCharsToAnalyze()
-
setMaxDocCharsToAnalyze
public void setMaxDocCharsToAnalyze(int maxDocCharsToAnalyze)
-
getTextFragmenter
public Fragmenter getTextFragmenter()
-
setTextFragmenter
public void setTextFragmenter(Fragmenter fragmenter)
-
getFragmentScorer
public Scorer getFragmentScorer()
- Returns:
- Object used to score each text fragment
-
setFragmentScorer
public void setFragmentScorer(Scorer scorer)
-
getEncoder
public Encoder getEncoder()
-
setEncoder
public void setEncoder(Encoder encoder)
-
-