经过上篇我们已经对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 を使用します。
名前空間 SearchTest
{
クラス検索テスト
{
プライベート IndexSearcher サーチャー = null;
プライベート アナライザー アナライザー = null;
パブリック SearchTest()
{
アナライザー = 新しい ChineseAnalyzer();
searcher = new IndexSearcher(IndexReader.Open("c:\index"));
public
ヒット検索(文字列クエリ文字列、文字列フィールド)
{
if (検索者 != null)
{
試す
{
QueryParser パーサー = 新しい QueryParser(フィールド,アナライザー);
parser.SetOperator(QueryParser.DEFAULT_OPERATOR_AND);
クエリクエリ = parser.Parse(queryString);
return searcher.Search(クエリ);
}
{ } をキャッチします
}
null を返します。
静的 void Main(string[] args
)
{
SearchTest サーチャー = new 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());
}
}
}
検索は一種の注釈効率の実行であるため、それを 1 つの変数レベルとして構築するオブジェクトは、少なくとも内部保存時間の制限を省くことができます。来检索。
最後のメイン関数に、関連文字「中国」を入力し、検索した結果、
合計時間: 1406250 秒で、22 個のファイルを連続して検索できました。 。 。
2: 以下は性能向上のため、多回線を使用して検索します
システムを使用する;
System.Collections.Generic を使用します。
System.Text を使用します。
Lucene.Net.Analysis.Cn を使用します。
Lucene.Net.Index を使用します。
Lucene.Net.QueryParsers を使用します。
Lucene.Net.Search を使用します。
System.Threading を使用します。
名前空間マルチサーチ
{
クラスマルチサーチ
{
static void Main(string[] args)
{
for (int i = 0; i < 50; i++)
{
SearchThread s = 新しい SearchThread();
スレッド thread=新しいスレッド(s.run);
thread.Start();
}
パブリック
クラス
SearchThread
{
public void run()
{
Thread.Sleep(10);
IndexSearcher サーチャー = new IndexSearcher(IndexReader.Open("c:\index"));
QueryParser パーサー = new QueryParser("コンテンツ", new ChineseAnalyzer());
parser.SetOperator(QueryParser.DEFAULT_OPERATOR_AND);
クエリ query = parser.Parse("中国");
DateTime start = DateTime.Now;
ヒット h = searcher.Search(query);
DateTime 終了 = DateTime.Now;
長い時間 = start.Ticks - end.Ticks;
Console.WriteLine("使用時間{0}秒", time);
}
}
http://www.cnblogs.com/abob/archive/2006/08/27/487558.html