今天工作不是特别多,在逛园子的时候看到了Lucene.Net,所以自己也参照别人的
博文自己动手写了个DEMO(虽然很多是参考过来的,不过自己动手更容易记住嘛!)。废话不多说,先上个图,把以前看到的几个好的jquery插件也用上
去了(JQuery关键字高亮度、JQuery分页),不记得地址了,就没有留作者的网址。

第一步,下载DLL文件,我这里用的是2.9的版本,貌似说不更新了。
第二步,把DLL引用到你的项目中,然后就是生成索引文件。
/// 执行查询语句,返回SqlDataReader |
/// <param name="strSQL">查询语句</param> |
/// <returns>SqlDataReader</returns> |
public static SqlDataReader ExecuteReader(string strSQL) |
SqlConnection connection = new SqlConnection(connectionString); |
SqlCommand cmd = new SqlCommand(strSQL, connection); |
SqlDataReader myReader = cmd.ExecuteReader(); |
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); |
Document doc = new Document(); |
doc.Add(new Field("ID", myred["ID"].ToString(), Field.Store.YES, Field.Index.UN_TOKENIZED)); |
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)); |
好了,索引文件已经建好了。
第三步,查询我们需要的数据鸟。
Stopwatch sw = new Stopwatch(); |
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); |
int num = pagesize + pages * pagesize; |
int emdnum = pages * pagesize; |
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>"; |
str += "<p>搜索结果为 " + hits.Length() + " 个 耗时:" + sw.ElapsedMilliseconds.ToString() + "毫秒</p>"; |
这样基本查询功能就OK了。写篇博客记录下,给自己加深下印象。明天有时间还得捣鼓捣鼓分词,内置分词不是很好。
代码写的很乱,还是提供个下载。(点击下载)