经过上篇我们已经对59部小说文本建立了索引,详情可见http://www.cnblogs.com/abob/archive/2006/08/26/487140.html
1: 搜索关键字 โดยใช้ระบบ;
ใช้ System.Collections.Generic;
ใช้ System.Text;
ใช้ System.IO;
ใช้ Lucene.Net.Analysis;
ใช้ Lucene.Net.Documents;
ใช้ Lucene.Net.Index;
ใช้ Lucene.Net.QueryParsers;
ใช้ Lucene.Net.Search;
ใช้ Lucene.Net.Analysis.Cn;
ทดสอบการค้นหาเนมสเปซ
-
การทดสอบการค้นหาคลาส
-
ผู้ค้นหา IndexSearcher ส่วนตัว = null;
ตัววิเคราะห์ตัววิเคราะห์ส่วนตัว = null;
การทดสอบการค้นหาสาธารณะ ()
-
ตัววิเคราะห์ = ChineseAnalyzer ใหม่ ();
ผู้ค้นหา = IndexSearcher ใหม่ (IndexReader.Open("c:\index"));
}
ค้นหา Hits สาธารณะ (สตริง queryString ฟิลด์สตริง)
-
ถ้า (ผู้ค้นหา != null)
-
พยายาม
-
QueryParser parser = QueryParser ใหม่ (ฟิลด์, ตัววิเคราะห์);
parser.SetOperator (แบบสอบถาม Parser.DEFAULT_OPERATOR_AND);
แบบสอบถามแบบสอบถาม = parser.Parse (queryString);
ส่งคืนผู้ค้นหาค้นหา (แบบสอบถาม);
-
จับ { }
-
กลับเป็นโมฆะ;
}
โมฆะคงที่หลัก (สตริง [] args)
-
ผู้ค้นหา SearchTest = SearchTest ใหม่ ();
DateTime start = DateTime.Now;
ฮิต h = searcher.search("中国", "content");
สิ้นสุด DateTime = DateTime.Now;
เวลานาน = end.Ticks - start.Ticks;
Console.WriteLine("总共耗时:{0}毫秒",Convert.ToString(time));
Console.WriteLine("总共找到{0}个文件",h.Length());
-
-
}
由于搜索是一种注重效率的行为,因此将其构建成一个轻量级的对象能节省不少内存和时间上的对象能节省不少内存和时间上的销.上上的的代码中,内置了一个IndexSearcher对象,并调用其search方法来检索.
在代码最后的main函数中,输入了关键字"中文",搜索的结果是
总共耗时:1406250毫秒总共找到22个文件请按任意键继续. - -
2:下เลดี้为了性能上的提高,我们来用多线程进行搜索
ใช้ระบบ;
ใช้ System.Collections.Generic;
ใช้ System.Text;
ใช้ Lucene.Net.Analysis.Cn;
ใช้ Lucene.Net.Index;
ใช้ Lucene.Net.QueryParsers;
ใช้ Lucene.Net.Search;
โดยใช้ System.Threading;
เนมสเปซ MuiltiSearch
-
คลาส MultiSearch
{
โมฆะคงที่หลัก (สตริง [] args)
-
สำหรับ (int i = 0; i < 50; i++)
-
SearchThread s = SearchThread ใหม่ ();
เธรดเธรด = เธรดใหม่ (s.run);
ด้าย.Start();
-
}
}
SearchThread ระดับสาธารณะ
-
การรันโมฆะสาธารณะ ()
-
กระทู้.สลีป(10);
ผู้ค้นหา IndexSearcher = IndexSearcher ใหม่ (IndexReader.Open("c:\index"));
QueryParser parser = QueryParser ใหม่ ("เนื้อหา", ChineseAnalyzer ใหม่ ());
parser.SetOperator (แบบสอบถาม Parser.DEFAULT_OPERATOR_AND);
แบบสอบถามแบบสอบถาม = parser.Parse("จีน");
DateTime start = DateTime.Now;
ฮิต h = searcher.Search (แบบสอบถาม);
สิ้นสุด DateTime = DateTime.Now;
เวลานาน = start.Ticks - end.Ticks;
Console.WriteLine("用时{0}毫秒", เวลา);
-
-
}