应用lucene.net进行搜索测试
点击次数:21 次 发布日期:2008-11-26 12:24:16 作者:源代码网
|
源代码网推荐 经过上篇我们已经对59部小说文本建立了索引,详情可见http://www.cnblogs.com/abob/archive/2006/08/26/487140.html 源代码网推荐 1: 搜索关键字 using System; 源代码网推荐 using System.Collections.Generic; 源代码网推荐 using System.Text; 源代码网推荐 using System.IO; 源代码网推荐 using Lucene.Net.Analysis; 源代码网推荐 using Lucene.Net.Documents; 源代码网推荐 using Lucene.Net.Index; 源代码网推荐 using Lucene.Net.QueryParsers; 源代码网推荐 using Lucene.Net.Search; 源代码网推荐 using Lucene.Net.Analysis.Cn; 源代码网推荐 源代码网推荐 namespace SearchTest 源代码网推荐 { 源代码网推荐 class SearchTest 源代码网推荐 { 源代码网推荐 private IndexSearcher searcher = null; 源代码网推荐 private Analyzer analyser = null; 源代码网推荐 源代码网推荐 public SearchTest() 源代码网推荐 { 源代码网推荐 analyser = new ChineseAnalyzer(); 源代码网推荐 searcher = new IndexSearcher(IndexReader.Open("c:\index")); 源代码网推荐 } 源代码网推荐 源代码网推荐 public Hits search(String queryString, string field) 源代码网推荐 { 源代码网推荐 if (searcher != null) 源代码网推荐 { 源代码网推荐 try 源代码网推荐 { 源代码网推荐 QueryParser parser = new QueryParser(field,analyser); 源代码网推荐 parser.SetOperator(QueryParser.DEFAULT_OPERATOR_AND); 源代码网推荐 Query query = parser.Parse(queryString); 源代码网推荐 return searcher.Search(query); 源代码网推荐 } 源代码网推荐 catch { } 源代码网推荐 } 源代码网推荐 return null; 源代码网推荐 } 源代码网推荐 源代码网推荐 static void Main(string[] args) 源代码网推荐 { 源代码网推荐 SearchTest searcher = new SearchTest(); 源代码网推荐 DateTime start = DateTime.Now; 源代码网推荐 Hits h = searcher.search("中国", "content"); 源代码网推荐 DateTime end = DateTime.Now; 源代码网推荐 long time = end.Ticks - start.Ticks; 源代码网推荐 Console.WriteLine("总共耗时:{0}毫秒",Convert.ToString(time)); 源代码网推荐 Console.WriteLine("总共找到{0}个文件",h.Length()); 源代码网推荐 } 源代码网推荐 } 源代码网推荐 } 源代码网推荐 源代码网推荐 由于搜索是一种注重效率的行为,因此将其构建成一个轻量级的对象能节省不少内存和时间上的开销.在上面的代码中,内置了一个IndexSearcher对象,并调用其search方法来检索. 源代码网推荐 在代码最后的main函数中,输入了关键字"中国",搜索的结果是 源代码网推荐 源代码网推荐 总共耗时:1406250毫秒 源代码网推荐 总共找到22个文件 源代码网推荐 请按任意键继续. . . 源代码网推荐 源代码网推荐 2:下面为了性能上的提高,我们来用多线程进行搜索 源代码网推荐 using System; 源代码网推荐 using System.Collections.Generic; 源代码网推荐 using System.Text; 源代码网推荐 using Lucene.Net.Analysis.Cn; 源代码网推荐 using Lucene.Net.Index; 源代码网推荐 using Lucene.Net.QueryParsers; 源代码网推荐 using Lucene.Net.Search; 源代码网推荐 using System.Threading; 源代码网推荐 源代码网推荐 源代码网推荐 namespace MuiltiSearch 源代码网推荐 { 源代码网推荐 class MultiSearch 源代码网推荐 { 源代码网推荐 源代码网推荐 static void Main(string[] args) 源代码网推荐 { 源代码网推荐 for (int i = 0; i < 50; i++) 源代码网推荐 { 源代码网推荐 SearchThread s = new SearchThread(); 源代码网推荐 Thread thread=new Thread(s.run); 源代码网推荐 thread.Start(); 源代码网推荐 } 源代码网推荐 } 源代码网推荐 源代码网推荐 } 源代码网推荐 源代码网推荐 public class SearchThread 源代码网推荐 { 源代码网推荐 public void run() 源代码网推荐 { 源代码网推荐 Thread.Sleep(10); 源代码网推荐 IndexSearcher searcher = new IndexSearcher(IndexReader.Open("c:\index")); 源代码网推荐 QueryParser parser = new QueryParser("content", new ChineseAnalyzer()); 源代码网推荐 parser.SetOperator(QueryParser.DEFAULT_OPERATOR_AND); 源代码网推荐 Query query = parser.Parse("中国"); 源代码网推荐 DateTime start = DateTime.Now; 源代码网推荐 源代码网推荐 Hits h = searcher.Search(query); 源代码网推荐 源代码网推荐 DateTime end = DateTime.Now; 源代码网推荐 long time = start.Ticks - end.Ticks; 源代码网推荐 源代码网推荐 Console.WriteLine("用时{0}毫秒", time); 源代码网推荐 } 源代码网推荐 } 源代码网推荐 } 源代码网推荐 源代码网推荐 http://www.cnblogs.com/abob/archive/2006/08/27/487558.html 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 做人要厚道,请注明转自酷网动力(www.ASPCOOL.COM)。 源代码网推荐 源代码网供稿. |
