Lucene.Net新手入门第一步
2011-09-09 12:59
381 查看
今天工作不是特别多,在逛园子的时候看到了Lucene.Net,所以自己也参照别人的
博文自己动手写了个DEMO(虽然很多是参考过来的,不过自己动手更容易记住嘛!)。废话不多说,先上个图,把以前看到的几个好的jquery插件也用上
去了(JQuery关键字高亮度、JQuery分页),不记得地址了,就没有留作者的网址。
第一步,下载DLL文件,我这里用的是2.9的版本,貌似说不更新了。
第二步,把DLL引用到你的项目中,然后就是生成索引文件。
好了,索引文件已经建好了。
第三步,查询我们需要的数据鸟。
view sourceprint?
这样基本查询功能就OK了。写篇博客记录下,给自己加深下印象。明天有时间还得捣鼓捣鼓分词,内置分词不是很好。
代码写的很乱,还是提供个下载。(点击下载)
博文自己动手写了个DEMO(虽然很多是参考过来的,不过自己动手更容易记住嘛!)。废话不多说,先上个图,把以前看到的几个好的jquery插件也用上
去了(JQuery关键字高亮度、JQuery分页),不记得地址了,就没有留作者的网址。
第一步,下载DLL文件,我这里用的是2.9的版本,貌似说不更新了。
第二步,把DLL引用到你的项目中,然后就是生成索引文件。
/// <summary> |
/// 执行查询语句,返回SqlDataReader |
/// </summary> |
/// <param name="strSQL">查询语句</param> |
/// <returns>SqlDataReader</returns> |
public static SqlDataReader ExecuteReader( string strSQL) |
{ |
SqlConnection connection = new SqlConnection(connectionString); |
SqlCommand cmd = new SqlCommand(strSQL,connection); |
try |
{ |
connection.Open(); |
SqlDataReader myReader = cmd.ExecuteReader(); |
return myReader; |
} |
catch (System.Data.SqlClient.SqlException e) |
{ |
throw new Exception(e.Message); |
} |
} |
//对数据库中的字段建立索引 |
public static IndexWriter CreateIndex(SqlDataReader myred) |
{ |
IndexWriter writer = new IndexWriter( "D:/index/" , new StandardAnalyzer(), true ); //索引的存储位置 |
try |
{ |
while (myred.Read()) |
{ |
Document doc = new Document(); |
doc.Add( new Field( "ID" ,myred[ "ID" ].ToString(),Field.Store.YES,Field.Index.UN_TOKENIZED)); //其中ID、Name、Add都是数据库中的字段名,这个应该可以看明白的吧 |
doc.Add( new Field( "Name" ,myred[ "Name" ].ToString(),Field.Store.YES,Field.Index.TOKENIZED)); |
doc.Add( new Field( "Add" ,myred[ "Add" ].ToString(),Field.Store.YES,Field.Index.TOKENIZED)); |
writer.AddDocument(doc); |
} |
writer.Optimize(); //优化索引 |
writer.Close(); |
myred.Close(); |
} |
catch (Exception e) |
{ |
myred.Close(); |
} |
return writer; |
} |
第三步,查询我们需要的数据鸟。
view sourceprint?
Stopwatch sw = new Stopwatch(); |
sw.Start(); //用于测试程序消耗时间 |
string path = "D:/index/" ; //索引存储目录 |
Sort sort = new Sort( new SortField( "ID" ,SortField.DOC, false )); //排序 |
IndexSearcher searcher = new IndexSearcher(path); |
QueryParser q = new QueryParser( "Name" , new StandardAnalyzer()); |
Query query = q.Parse(strwhere); |
Hits hits = searcher.Search(query,sort); |
pcount = hits.Length(); |
if (hits.Length() > 0) |
{ |
int num = pagesize + pages * pagesize; |
int emdnum = pages * pagesize; //这里是因为用到分页,采取的方式是从第几条开始,取多少条的方式来分页,页数越大,性能越差,200W条数据跳到最后页需要4M,求指教 |
if (hits.Length() < num) |
{ |
num = hits.Length(); |
} |
for ( int i = emdnum; i < num; i++) |
{ |
Document doc =hits.Doc(i); |
str += "<p><a href=\"Show.aspx?ID=" + doc.Get( "ID" ) + "\" title=\"" + doc.Get( "Name" ) + "\">" + doc.Get( "Name" ) + "</a></p>" ; |
} |
} |
searcher.Close(); |
sw.Stop(); |
str += "<p>搜索结果为 " + hits.Length() + " 个 耗时:" + sw.ElapsedMilliseconds.ToString() + "毫秒</p>" ; |
代码写的很乱,还是提供个下载。(点击下载)
相关文章推荐
- Lucene.Net入门教程示例
- Lucene.Net入门教程及示例
- 【推荐】ASP.NET新手入门帖总汇
- lucene第一步--简单的入门demo
- Lucene.net入门学习系列(1)
- Lucene.net入门学习系列(1)
- 《ASP.NET入门第一步——基于C#和ASP.NET2.0》进入待出版状态
- Asp.net mvc新手指导入门基本操作
- Lucene.net入门学习系列(2)
- Lucene.Net 入门---介绍篇
- 【转载】Lucene.Net入门教程及示例
- [C#新手入门 七] asp.net部署后访问数据库发生vs崩溃
- ASP.NET 2.0 新手SQL存储过程简单实例入门 绝对经典入门
- Lucene.Net 入门级实例 浅显易懂。。。
- PDF.NET SOD 开源框架红包派送活动 && 新手快速入门指引
- [新手入门]快速学习 ADO.NET Entity Framework系列文章 #1~#2
- Lucene.Net 入门---介绍篇
- ASP.NET 2.0 新手SQL存储过程简单实例入门。绝对经典入门
- Lucene.NET使用入门(一)【实现快速搜索】
- Lucene.net入门学习系列(2)