經過上篇我們已經對第 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());
}
}
由於搜尋是注重效率的行為,因此
將
其建構成一個輕量級的物件可以節省大量記憶體和時間上的開銷。總共運行: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);
}
}