public static SearchResult GetFastSearchResultFragments(ref SearchResult sr) { Document doc = sr.Document; string contents = doc.Get("contents"); SimpleHTMLFormatter formatter = new SimpleHTMLFormatter("<span class=\"highlight\">", "</span>"); SimpleFragmenter fragmenter = new SimpleFragmenter(sr.FragmentSize); Highlighter hiliter = new Highlighter(formatter, new QueryScorer(sr.QueryParser.Parse(sr.Query))); hiliter.SetTextFragmenter(fragmenter); int numfragments = contents.Length / fragmenter.GetFragmentSize() + 1; TokenStream tokenstream = sr.Analyzer.TokenStream("contents", new StringReader(contents)); TextFragment[] frags = hiliter.GetBestTextFragments(tokenstream, contents, false, numfragments); //SearchResult sr = new SearchResult(doc, _analyzer, query, _fragmentSize); foreach (TextFragment frag in frags) { if (frag.GetScore() > 0) sr.AddFragment(frag.ToString()); } return sr; }
public SearchResult[] Search(string query) { Hits hits = _doSearch(query); List<SearchResult> results = new List<SearchResult>(); for (int i = 0; i < hits.Length(); i++) { Document doc = hits.Doc(i); string contents = doc.Get("contents"); SimpleHTMLFormatter formatter = new SimpleHTMLFormatter("<span class=\"highlight\">", "</span>"); SimpleFragmenter fragmenter = new SimpleFragmenter(_fragmentSize); Highlighter hiliter = new Highlighter(formatter, new QueryScorer(_createQueryParser().Parse(query))); hiliter.SetTextFragmenter(fragmenter); int numfragments = contents.Length / fragmenter.GetFragmentSize() + 1; TokenStream tokenstream = _analyzer.TokenStream("contents", new StringReader(contents)); TextFragment[] frags = hiliter.GetBestTextFragments(tokenstream, contents, false, numfragments); SearchResult sr = new SearchResult(doc, _analyzer, query, _fragmentSize); foreach (TextFragment frag in frags) { if (frag.GetScore() > 0) sr.AddFragment(frag.ToString()); } sr.QueryParser = _createQueryParser(); results.Add(sr); } return results.ToArray(); }