001    package railo.runtime.search.lucene2.highlight;
002    
003    import java.io.IOException;
004    import java.io.StringReader;
005    
006    import org.apache.lucene.analysis.Analyzer;
007    import org.apache.lucene.analysis.TokenStream;
008    import org.apache.lucene.search.Query;
009    import org.apache.lucene.search.highlight.Highlighter;
010    import org.apache.lucene.search.highlight.QueryScorer;
011    import org.apache.lucene.search.highlight.SimpleHTMLFormatter;
012    
013    import railo.commons.lang.StringUtil;
014    
015    public class _Highlight {
016    
017            public static String createContextSummary(Object highlighter, Analyzer analyzer, String text, int maxNumFragments,String defaultValue) throws IOException {
018                    //try {
019                    if(!(highlighter instanceof Highlighter) || analyzer==null || StringUtil.isEmpty(text))
020                            return defaultValue;
021                            
022                    TokenStream tokenStream = analyzer.tokenStream("", new StringReader(text));
023                            return ((Highlighter)highlighter).getBestFragments(tokenStream, text, maxNumFragments, "...");
024                    //}catch (Throwable t) {}
025                                    
026            }
027    
028            public static Object createHighlighter(Query query,String highlightBegin,String highlightEnd) {
029                    
030                            return new Highlighter(
031                                            //new SimpleHTMLFormatter("<span class=\"matching-term\">","</span>"),
032                                            new SimpleHTMLFormatter(highlightBegin,highlightEnd),
033                                            new QueryScorer(query));
034                    
035            }
036    
037    }