Class Highlighter


  • public class Highlighter
    extends java.lang.Object
    Class used to markup highlighted terms found in the best sections of a text, using configurable Fragmenter, Scorer, Formatter, Encoder and tokenizers.
    • Field Detail

      • DEFAULT_MAX_CHARS_TO_ANALYZE

        public static final int DEFAULT_MAX_CHARS_TO_ANALYZE
        See Also:
        Constant Field Values
    • Constructor Detail

      • Highlighter

        public Highlighter​(Scorer fragmentScorer)
      • Highlighter

        public Highlighter​(Formatter formatter,
                           Scorer fragmentScorer)
    • 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 calls 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
        Throws:
        InvalidTokenOffsetsException - thrown if any token's endOffset exceeds the provided text's length
        java.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 length
        java.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 calls getBestFragments(TokenStream, String, int)
        Parameters:
        analyzer - the analyzer that will be used to split text into chunks
        fieldName - the name of the field being highlighted (used by analyzer)
        text - text to highlight terms in
        maxNumFragments - 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 length
        java.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 in
        maxNumFragments - 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 length
        java.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 error
        InvalidTokenOffsetsException - 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 in
        maxNumFragments - 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 length
        java.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)