一、简介
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 代码复制内容到剪贴板
- using Lucene.Net.Index;
- using Lucene.Net.Store;
- using Lucene.Net.Analysis;
- using Lucene.Net.Analysis.Standard;
- using Lucene.Net.Documents;
- /// <summary>
- /// 创建索引
- /// </summary>
- protected void CreatedIndex()
- {
- Analyzer analyzer = new StandardAnalyzer();
- IndexWriter writer = new IndexWriter("IndexDirectory", analyzer, true);
- AddDocument(writer, "SQL Server 2008 的发布", "SQL Server 2008 的新特性");
- AddDocument(writer, "ASP.Net MVC框架配置与分析", "而今,微软推出了新的MVC开发框架,也就是Microsoft ASP.NET 3.5 Extensions");
- writer.Optimize();
- writer.Close();
- }
- /// <summary>
- /// 建立索引字段
- /// </summary>
- /// <param name="writer"></param>
- /// <param name="title"></param>
- /// <param name="content"></param>
- protected void AddDocument(IndexWriter writer, string title, string content)
- {
- Document document = new Document();
- document.Add(new Field("title", title, Field.Store.YES, Field.Index.ANALYZED));
- document.Add(new Field("content", content, Field.Store.YES, Field.Index.ANALYZED));
- writer.AddDocument(document);
- }
第二步:使用索引(测试搜索)
折叠csharp 代码复制内容到剪贴板
- using Lucene.Net.Index;
- using Lucene.Net.Store;
- using Lucene.Net.Analysis;
- using Lucene.Net.Analysis.Standard;
- using Lucene.Net.Documents;
- using Lucene.Net.Search;
- using Lucene.Net.QueryParsers;
- /// <summary>
- /// 全文搜索
- /// </summary>
- /// <param name="title">搜索字段(范围)</param>
- /// <param name="content">搜索字段(范围)</param>
- /// <param name="keywords">要搜索的关键词</param>
- protected void Search(string title, string content, string keywords)
- {
- Analyzer analyzer = new StandardAnalyzer(); //分词器
- IndexSearcher searcher = new IndexSearcher("IndexDirectory"); //指定其搜索的目录
- MultiFieldQueryParser parser = new MultiFieldQueryParser(new string[] { title, content }, analyzer); //多字段搜索
- //QueryParser q = new QueryParser("indexcontent", new StandardAnalyzer()); //单字段搜索
- Query query = parser.Parse(keywords); //
- Hits hits = searcher.Search(query);
- for (int i = 0; i < hits.Length(); i++)
- {
- Document doc = hits.Doc(i);
- Response.Write(string.Format("字段{3}搜索到:{0} 字段{4}搜索到:{1}", doc.Get("title"), doc.Get("content"), title, content));
- }
- searcher.Close();
- }