org.apache.lucene.search.highlight

Class Highlighter

public class Highlighter extends Object

Class used to markup highlighted terms found in the best sections of a text, using configurable {@link Fragmenter}, {@link Scorer}, {@link Formatter}, {@link Encoder} and tokenizers.

Author: mark@searcharea.co.uk

Field Summary
static intDEFAULT_MAX_DOC_BYTES_TO_ANALYZE
Constructor Summary
Highlighter(Scorer fragmentScorer)
Highlighter(Formatter formatter, Scorer fragmentScorer)
Highlighter(Formatter formatter, Encoder encoder, Scorer fragmentScorer)
Method Summary
StringgetBestFragment(Analyzer analyzer, String fieldName, String text)
Highlights chosen terms in a text, extracting the most relevant section.
StringgetBestFragment(TokenStream tokenStream, String text)
Highlights chosen terms in a text, extracting the most relevant section.
String[]getBestFragments(Analyzer analyzer, String text, int maxNumFragments)
Highlights chosen terms in a text, extracting the most relevant sections.
String[]getBestFragments(TokenStream tokenStream, String text, int maxNumFragments)
Highlights chosen terms in a text, extracting the most relevant sections.
StringgetBestFragments(TokenStream tokenStream, String text, int maxNumFragments, 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, String text, boolean mergeContiguousFragments, int maxNumFragments)
Low level api to get the most relevant (formatted) sections of the document.
EncodergetEncoder()
ScorergetFragmentScorer()
intgetMaxDocBytesToAnalyze()
FragmentergetTextFragmenter()
voidsetEncoder(Encoder encoder)
voidsetFragmentScorer(Scorer scorer)
voidsetMaxDocBytesToAnalyze(int byteCount)
voidsetTextFragmenter(Fragmenter fragmenter)

Field Detail

DEFAULT_MAX_DOC_BYTES_TO_ANALYZE

public static final int DEFAULT_MAX_DOC_BYTES_TO_ANALYZE

Constructor Detail

Highlighter

public Highlighter(Scorer fragmentScorer)

Highlighter

public Highlighter(Formatter formatter, Scorer fragmentScorer)

Highlighter

public Highlighter(Formatter formatter, Encoder encoder, Scorer fragmentScorer)

Method Detail

getBestFragment

public final String getBestFragment(Analyzer analyzer, String fieldName, String text)
Highlights chosen terms in a text, extracting the most relevant section. This is a convenience method that calls {@link #getBestFragment(TokenStream, String)}

Parameters: analyzer the analyzer that will be used to split text into chunks text text to highlight terms in fieldName Name of field used to influence analyzer's tokenization policy

Returns: highlighted text fragment or null if no terms found

getBestFragment

public final String getBestFragment(TokenStream tokenStream, String text)
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 efficently 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

getBestFragments

public final String[] getBestFragments(Analyzer analyzer, String text, int maxNumFragments)
Highlights chosen terms in a text, extracting the most relevant sections. This is a convenience method that calls {@link #getBestFragments(TokenStream, String, int)}

Parameters: analyzer the analyzer that will be used to split text into chunks text text to highlight terms in maxNumFragments the maximum number of fragments.

Returns: highlighted text fragments (between 0 and maxNumFragments number of fragments)

getBestFragments

public final String[] getBestFragments(TokenStream tokenStream, String text, int maxNumFragments)
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 in maxNumFragments the maximum number of fragments.

Returns: highlighted text fragments (between 0 and maxNumFragments number of fragments)

getBestFragments

public final String getBestFragments(TokenStream tokenStream, String text, int maxNumFragments, String separator)
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 in maxNumFragments the maximum number of fragments. separator the separator used to intersperse the document fragments (typically "...")

Returns: highlighted text

getBestTextFragments

public final TextFragment[] getBestTextFragments(TokenStream tokenStream, String text, boolean mergeContiguousFragments, int maxNumFragments)
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.

Parameters: tokenStream text maxNumFragments mergeContiguousFragments

Throws: IOException

getEncoder

public Encoder getEncoder()

getFragmentScorer

public Scorer getFragmentScorer()

Returns: Object used to score each text fragment

getMaxDocBytesToAnalyze

public int getMaxDocBytesToAnalyze()

Returns: the maximum number of bytes to be tokenized per doc

getTextFragmenter

public Fragmenter getTextFragmenter()

setEncoder

public void setEncoder(Encoder encoder)

setFragmentScorer

public void setFragmentScorer(Scorer scorer)

Parameters: scorer

setMaxDocBytesToAnalyze

public void setMaxDocBytesToAnalyze(int byteCount)

Parameters: byteCount the maximum number of bytes to be tokenized per doc (This can improve performance with large documents)

setTextFragmenter

public void setTextFragmenter(Fragmenter fragmenter)

Parameters: fragmenter

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