放逐忧伤

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

一、简介

Lucence.Net提供一组API,让我们能快速开发自己的搜索引擎,既全文搜索。
Lucene.Net是Apache基金会的开源项目。
dotNet版的可以在这里找到:http://incubator.apache.org/lucene.net/
最新源码可以直接使用SVN下载:https://svn.apache.org/repos/asf/lucene/lucene.net/tags/
源码网址有时会改变,具体下载不了时,可以到http://incubator.apache.org/lucene.net/查看。

二、简单示例

在下载到Lucence.Net源代码或是dll后,引入到我们的项目中。我们来作一个简单的实例

1。第一步:建立索引 

折叠csharp 代码复制内容到剪贴板
  1. using Lucene.Net.Index;   
  2. using Lucene.Net.Store;   
  3. using Lucene.Net.Analysis;   
  4. using Lucene.Net.Analysis.Standard;   
  5. using Lucene.Net.Documents;   
  6.   
  7.     /// <summary>   
  8.     /// 创建索引   
  9.     /// </summary>   
  10.     protected void CreatedIndex()   
  11.     {   
  12.         Analyzer analyzer = new StandardAnalyzer();   
  13.         IndexWriter writer = new IndexWriter("IndexDirectory", analyzer, true);   
  14.         AddDocument(writer, "SQL Server 2008 的发布""SQL Server 2008 的新特性");   
  15.         AddDocument(writer, "ASP.Net MVC框架配置与分析""而今,微软推出了新的MVC开发框架,也就是Microsoft ASP.NET 3.5 Extensions");   
  16.         writer.Optimize();   
  17.         writer.Close();   
  18.     }   
  19.     /// <summary>   
  20.     /// 建立索引字段   
  21.     /// </summary>   
  22.     /// <param name="writer"></param>   
  23.     /// <param name="title"></param>   
  24.     /// <param name="content"></param>   
  25.     protected void AddDocument(IndexWriter writer, string title, string content)   
  26.     {   
  27.         Document document = new Document();   
  28.         document.Add(new Field("title", title, Field.Store.YES, Field.Index.ANALYZED));   
  29.         document.Add(new Field("content", content, Field.Store.YES, Field.Index.ANALYZED));   
  30.         writer.AddDocument(document);   
  31.     }  

第二步:使用索引(测试搜索)

折叠csharp 代码复制内容到剪贴板
  1. using Lucene.Net.Index;   
  2. using Lucene.Net.Store;   
  3. using Lucene.Net.Analysis;   
  4. using Lucene.Net.Analysis.Standard;   
  5. using Lucene.Net.Documents;   
  6. using Lucene.Net.Search;   
  7. using Lucene.Net.QueryParsers;   
  8.   
  9.     /// <summary>   
  10.     /// 全文搜索   
  11.     /// </summary>   
  12.     /// <param name="title">搜索字段(范围)</param>   
  13.     /// <param name="content">搜索字段(范围)</param>   
  14.     /// <param name="keywords">要搜索的关键词</param>   
  15.     protected void Search(string title, string content, string keywords)   
  16.     {   
  17.         Analyzer analyzer = new StandardAnalyzer();                     //分词器   
  18.         IndexSearcher searcher = new IndexSearcher("IndexDirectory");   //指定其搜索的目录   
  19.         MultiFieldQueryParser parser = new MultiFieldQueryParser(new string[] { title, content }, analyzer);    //多字段搜索   
  20.         //QueryParser q = new QueryParser("indexcontent", new StandardAnalyzer());                              //单字段搜索   
  21.         Query query = parser.Parse(keywords);                                                       //   
  22.         Hits hits = searcher.Search(query);   
  23.         for (int i = 0; i < hits.Length(); i++)   
  24.         {   
  25.             Document doc = hits.Doc(i);   
  26.             Response.Write(string.Format("字段{3}搜索到:{0} 字段{4}搜索到:{1}", doc.Get("title"), doc.Get("content"), title, content));   
  27.         }   
  28.         searcher.Close();   
  29.     }  
posted on 2011-06-30 10:51  放逐忧伤  阅读(1138)  评论(0编辑  收藏  举报