时间:2016-02-16 01:57 来源: 我爱IT技术网 作者:佚名
欢迎您访问我爱IT技术网,今天小编为你分享的编程技术是:【基于ASP.NET的lucene.net全文搜索实现步骤】,下面是详细的讲解!
基于ASP.NET的lucene.net全文搜索实现步骤
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();
}
}
关于基于ASP.NET的lucene.net全文搜索实现步骤的用户互动如下:
相关问题:
答: >>详细
相关问题:
答: >>详细
相关问题:
答: >>详细
- 【asp】asp.net url重写浅谈-net-url重写
- 【DataSet】DataSet、DataTable、DataRow区别详解
- 【asp】asp.net 动态添加多个用户控件-net-动态添
- 【ASP】ASP.NET中内嵌页面代码的一个问题-NET-内
- 【As】Asp.net中的页面乱码的问题-sp--pn-ne-et
- 【增加记录】asp.net中获取新增加记录的ID Access
- 【创建】ASP.NET Web API教程 创建域模型的方法详
- 【Asp】Asp.net 页面调用javascript变量的值-net-
- 【ASP】ASP.NET 5升级后如何删除旧版本的DNX-NET5
- 【404页面】ASP.NET设置404页面返回302HTTP状态码
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
