public static List <TNews> Search(String indexDir, String q, int pageLen, int pageNo, out int recCount) { string keywords = q; IndexSearcher search = new IndexSearcher(indexDir); q = GetKeyWordsSplitBySpace(q, new PanGuTokenizer()); QueryParser queryParser = new QueryParser("contents", new PanGuAnalyzer(true)); Query query = queryParser.Parse(q); Hits hits = search.Search(query); List <TNews> result = new List <TNews>(); recCount = hits.Length(); int i = (pageNo - 1) * pageLen; while (i < recCount && result.Count < pageLen) { TNews news = null; try { news = new TNews(); news.Title = hits.Doc(i).Get("title"); news.Content = hits.Doc(i).Get("contents"); news.Url = hits.Doc(i).Get("url"); String strTime = hits.Doc(i).Get("time"); news.Time = DateTime.ParseExact(strTime, "yyyyMMdd", null); PanGu.HighLight.SimpleHTMLFormatter simpleHTMLFormatter = new PanGu.HighLight.SimpleHTMLFormatter("<font color=\"red\">", "</font>"); PanGu.HighLight.Highlighter highlighter = new PanGu.HighLight.Highlighter(simpleHTMLFormatter, new Segment()); highlighter.FragmentSize = 50; news.Abstract = highlighter.GetBestFragment(keywords, news.Content); //// 高亮显示设置 ////TermQuery tQuery = new TermQuery(new Term("contents", q)); //SimpleHTMLFormatter simpleHTMLFormatter = new SimpleHTMLFormatter("<font color=\"red\">", "</font>"); //Highlighter highlighter = new Highlighter(simpleHTMLFormatter, new QueryScorer(query)); ////关键内容显示大小设置 //highlighter.SetTextFragmenter(new SimpleFragmenter(50)); ////取出高亮显示内容 //Lucene.Net.Analysis.KTDictSeg.KTDictSegAnalyzer analyzer = new Lucene.Net.Analysis.KTDictSeg.KTDictSegAnalyzer(); //TokenStream tokenStream = analyzer.TokenStream("contents", new StringReader(news.Content)); //news.Abstract = highlighter.GetBestFragment(tokenStream, news.Content); } catch (Exception e) { Console.WriteLine(e.Message); } finally { result.Add(news); i++; } } search.Close(); return(result); }
public static List<TNews> Search(String indexDir, String q, int pageLen, int pageNo, out int recCount) { string keywords = q; IndexSearcher search = new IndexSearcher(indexDir); q = GetKeyWordsSplitBySpace(q, new PanGuTokenizer()); QueryParser queryParser = new QueryParser("contents", new PanGuAnalyzer(true)); Query query = queryParser.Parse(q); Hits hits = search.Search(query); List<TNews> result = new List<TNews>(); recCount = hits.Length(); int i = (pageNo - 1) * pageLen; while (i < recCount && result.Count < pageLen) { TNews news = null; try { news = new TNews(); news.Title = hits.Doc(i).Get("title"); news.Content = hits.Doc(i).Get("contents"); news.Url = hits.Doc(i).Get("url"); String strTime = hits.Doc(i).Get("time"); news.Time = DateTime.ParseExact(strTime, "yyyyMMdd", null); PanGu.HighLight.SimpleHTMLFormatter simpleHTMLFormatter = new PanGu.HighLight.SimpleHTMLFormatter("<font color=\"red\">", "</font>"); PanGu.HighLight.Highlighter highlighter = new PanGu.HighLight.Highlighter(simpleHTMLFormatter, new Segment()); highlighter.FragmentSize = 50; news.Abstract = highlighter.GetBestFragment(keywords, news.Content); //// ������ʾ���� ////TermQuery tQuery = new TermQuery(new Term("contents", q)); //SimpleHTMLFormatter simpleHTMLFormatter = new SimpleHTMLFormatter("<font color=\"red\">", "</font>"); //Highlighter highlighter = new Highlighter(simpleHTMLFormatter, new QueryScorer(query)); ////�ؼ�������ʾ��С���� //highlighter.SetTextFragmenter(new SimpleFragmenter(50)); ////ȡ��������ʾ���� //Lucene.Net.Analysis.KTDictSeg.KTDictSegAnalyzer analyzer = new Lucene.Net.Analysis.KTDictSeg.KTDictSegAnalyzer(); //TokenStream tokenStream = analyzer.TokenStream("contents", new StringReader(news.Content)); //news.Abstract = highlighter.GetBestFragment(tokenStream, news.Content); } catch (Exception e) { Console.WriteLine(e.Message); } finally { result.Add(news); i++; } } search.Close(); return result; }