基于ASP.NET的lucene.net全文搜索(一)
2013-01-31 21:10
483 查看
在做项目的时候,需求添加全文搜索,选择了lucene.net方向,调研了一下,基本实现了需求,现在将它分享给大家。理解不深请多多包涵。
在完成需求的时候,查看的大量的资料,本文不介绍详细的lucene.net工程建立,只介绍如何对文档进行全文搜索。对于如何建立lucene.net的工程请大家访问
lucene.net开发。
使用lucene.net搜索分为两个部分,首先是创建索引,创建文本内容的索引,其次是根据创建的索引进行搜索。那么如何对文档进行索引呢,主要是对文档的内容进行索引,关键是提取出文档的内容,按照常规实现,由简到难,提取txt格式的文本相对比较简单,如果实现了提取txt文本,接下来就容易多了,万丈高楼平地起,这就是地基。
1.首先创建ASP.NET页面。
View Code
现在整个lucene.net搜索全文的过程就建立完了,现在可以搜索txt格式的文件,搜索其他格式的文件在以后添加,主要核心思想就是提取各个不同格式文件的文本内容。
显示效果如下:
在以后的博文里继续接受搜索其他格式的文档。
本人是菜鸟,编码水平和能力有限,欢迎批评指点,不胜感激,QQ343548233
在完成需求的时候,查看的大量的资料,本文不介绍详细的lucene.net工程建立,只介绍如何对文档进行全文搜索。对于如何建立lucene.net的工程请大家访问
lucene.net开发。
使用lucene.net搜索分为两个部分,首先是创建索引,创建文本内容的索引,其次是根据创建的索引进行搜索。那么如何对文档进行索引呢,主要是对文档的内容进行索引,关键是提取出文档的内容,按照常规实现,由简到难,提取txt格式的文本相对比较简单,如果实现了提取txt文本,接下来就容易多了,万丈高楼平地起,这就是地基。
1.首先创建ASP.NET页面。
View Code
protected void Button1_Click(object sender, EventArgs e) { //获取关键字 string keyword = TextBox1.Text.Trim(); int num = 10; //关键字判空 if (string.IsNullOrEmpty(keyword)) { Response.Write("<script>alert('请输入要查找的关键字');</script>"); return; } IndexReader reader = null; IndexSearcher searcher = null; try { reader = IndexReader.Open(FSDirectory.Open(new DirectoryInfo(indexDirectory)), true); searcher = new IndexSearcher(reader); //创建查询 PerFieldAnalyzerWrapper wrapper = new PerFieldAnalyzerWrapper(analyzer); wrapper.AddAnalyzer("FileName", analyzer); wrapper.AddAnalyzer("Path", analyzer); wrapper.AddAnalyzer("Content", analyzer); string[] fields = { "FileName", "Path", "Content" }; QueryParser parser = new MultiFieldQueryParser(Lucene.Net.Util.Version.LUCENE_30, fields, wrapper); //根据关键字查询 Query query = parser.Parse(keyword); TopScoreDocCollector collector = TopScoreDocCollector.Create(num, true); searcher.Search(query, collector); //这里会根据权重排名查询顺序 var hits = collector.TopDocs().ScoreDocs; int numTotalHits = collector.TotalHits; //以后就可以对获取到的collector数据进行操作 for (int i = 0; i < hits.Count(); i++) { var hit = hits[i]; Lucene.Net.Documents.Document doc = searcher.Doc(hit.Doc); Lucene.Net.Documents.Field fileNameField = doc.GetField("FileName"); Lucene.Net.Documents.Field pathField = doc.GetField("Path"); Lucene.Net.Documents.Field contentField = doc.GetField("Content"); //在页面循环输出表格 strTable.Append("<tr>"); strTable.Append("<td>" + fileNameField.StringValue + "</td>"); strTable.Append("</tr>"); strTable.Append("<tr>"); strTable.Append("<td>" + pathField.StringValue + "</td>"); strTable.Append("</tr>"); strTable.Append("<tr>"); strTable.Append("<td>" + contentField.StringValue.Substring(0, 300) + "</td>"); strTable.Append("</tr>"); } } finally { if (searcher != null) searcher.Dispose(); if (reader != null) reader.Dispose(); } }
现在整个lucene.net搜索全文的过程就建立完了,现在可以搜索txt格式的文件,搜索其他格式的文件在以后添加,主要核心思想就是提取各个不同格式文件的文本内容。
显示效果如下:
在以后的博文里继续接受搜索其他格式的文档。
本人是菜鸟,编码水平和能力有限,欢迎批评指点,不胜感激,QQ343548233
相关文章推荐
- 基于ASP.NET的lucene.net全文搜索实现步骤
- 基于ASP.NET的lucene.net全文搜索(二)
- 基于ASP.NET的lucene.net全文搜索实现步骤
- 基于ASP.NET的lucene.net全文搜索(一)
- 基于ASP.NET的lucene.net全文搜索(二)
- 站内搜索------仿造Baidu简单实现基于Lucene.net的全文检索的功能
- 记一次企业级爬虫系统升级改造(五):基于JieBaNet+Lucene.Net实现全文搜索
- 记一次企业级爬虫系统升级改造(五):基于JieBaNet+Lucene.Net实现全文搜索
- 记一次企业级爬虫系统升级改造(五):基于JieBaNet+Lucene.Net实现全文搜索
- 基于Lucene的全文搜索——Solr
- lucene全文搜索之一:lucene的主要功能和基本结构(基于lucene5.5.3)
- 一个Asp.net下word在线编辑、全文关键字搜索的完整示例
- lucene全文搜索之二:创建索引器(创建IKAnalyzer分词器和索引目录管理)基于lucene5.5.3
- 全文搜索Lucene.Net优化
- Lucene.net 实现全文搜索
- 火力全开——仿造Baidu简单实现基于Lucene.net的全文检索的功能
- 基于Lucene.net全文检索
- 基于Lucene.net全文检索
- 利用Lucene.net实现全文搜索
- Lucene.net 实现全文搜索