经过上篇我们已经对第 59 部小说文本建立了索引,详情可见http://www.cnblogs.com/abob/archive/2006/08/26/487140.html
1:使用系统搜索关键字;
使用 System.Collections.Generic;
使用系统文本;
使用系统.IO;
使用 Lucene.Net.Analysis;
使用 Lucene.Net.Documents;
使用 Lucene.Net.Index;
使用 Lucene.Net.QueryParsers;
使用 Lucene.Net.Search;
使用Lucene.Net.Analysis.Cn;
命名空间搜索测试
{
类搜索测试
{
私有 IndexSearcher 搜索器 = null;
私有分析器分析器 = null;
公共搜索测试()
{
分析器 = new ChineseAnalyzer();
searcher = new IndexSearcher(IndexReader.Open("c:\index"));
}
公共点击搜索(字符串查询字符串,字符串字段)
{
if(搜索者!= null)
{
尝试
{
QueryParser 解析器 = new QueryParser(字段,分析器);
parser.SetOperator(QueryParser.DEFAULT_OPERATOR_AND);
查询 query = parser.Parse(queryString);
返回搜索者。搜索(查询);
}
抓住 { }
}
返回空值;
}
static void Main(string[] args)
{
SearchTest 搜索器 = new SearchTest();
日期时间开始 = DateTime.Now;
点击数 h = searcher.search("中国", "内容");
日期时间结束 = DateTime.Now;
长时间 = end.Ticks - start.Ticks;
Console.WriteLine("总运行时间:{0}毫秒",Convert.ToString(time));
Console.WriteLine("总共找到{0}个文件",h.Length());
}
}
由于搜索是一个注重效率的行为,因此将其构建成一个轻量级的对象能节省大量内存和时间上的开销。在上面的代码中,内置了一个 IndexSearcher 对象,并调用其search
方法
来搜索。
在代码最后的主函数中,输入了关键字“中国”,搜索的结果是
总共运行:1406250 总共找到22个文件请按任意键继续。 。 。
2:下面为了性能上的提高,我们来用多线程进行搜索
使用系统;
使用 System.Collections.Generic;
使用系统文本;
使用Lucene.Net.Analysis.Cn;
使用 Lucene.Net.Index;
使用 Lucene.Net.QueryParsers;
使用 Lucene.Net.Search;
使用系统线程;
命名空间多重搜索
{
类多重搜索
{
static void Main(字符串[] args)
{
for (int i = 0; i < 50; i++)
{
SearchThread s = new SearchThread();
线程 thread=new Thread(s.run);
线程.Start();
}
}
}
公共类 SearchThread
{
公共无效运行()
{
线程睡眠(10);
IndexSearcher 搜索器 = new IndexSearcher(IndexReader.Open("c:\index"));
QueryParser解析器 = new QueryParser("内容", new ChineseAnalyzer());
parser.SetOperator(QueryParser.DEFAULT_OPERATOR_AND);
查询 query = parser.Parse("中国");
日期时间开始 = DateTime.Now;
点击 h = searcher.Search(query);
日期时间结束 = DateTime.Now;
长时间 = start.Ticks - end.Ticks;
Console.WriteLine("用时{0}毫秒", time);
}
}
http://www.cnblogs.com/abob/archive/2006/08/27/487558.html