用Lucene.net建立自己的网站搜索
2007-06-02 17:48
447 查看
在家无聊。便研究一下 Lucene.net。
Lucene.net 是 lucene在java下移植到.net上来的。
于是 我打算做一个实验看看效果如何 以下是简单代码
1:建立索引
Lucene.Net.Analysis.Standard.StandardAnalyzer a=new Lucene.Net.Analysis.Standard.StandardAnalyzer();
IndexWriter iw=new IndexWriter(@"E:/1/index",a,true); //E:/1/index 为索引文件存放地址
string conn="数据库连接字符串";
using(DataTable dt=SqlHelper.ExecuteDataset(conn,CommandType.Text,"Select top 100 name,Intr from book ").Tables[0])
{
foreach(DataRow dr in dt.Rows)
{
IndexBook(dr["name"].ToString(),dr["intr"].ToString(),iw); 这是关键
}
}
iw.Optimize();
iw.Close();
MessageBox.Show("succes");
下面请看IndexBook 这个函数
private void IndexBook(string bookname,string bookintr,IndexWriter writer)
{
try
{
Document doc = new Document();
doc.Add(Field.Keyword("bookname", bookname));
doc.Add(Field.Text("intr", bookintr));
writer.AddDocument(doc);
}
catch (FileNotFoundException fnfe)
{
}
}
我一向力求最简单就实现业务需求。 于是上面的函数 8句话也就搞定了。
索引建立完毕。现在我们开始 进行一些简单搜索
项目建立 我不多说了。打字实在麻烦。
我简单说一下 搜索返回代码
Lucene.Net.Search.IndexSearcher search=new Lucene.Net.Search.IndexSearcher(@"E:/1/index"); //把刚才建立的索引取出来
Lucene.Net.Search.Query q=Lucene.Net.QueryParsers.QueryParser.Parse("搜索关键字","intr",new Lucene.Net.Analysis.Standard.StandardAnalyzer());
Lucene.Net.Search.Hits hit =search.Search(q);
lb.Items.Clear(); //lb是我测试程序中的一个 listbox
for(int i=0;i<=hit.Length()-1;i++)
{
lb.Items.Add(hit.Doc(i).GetField("bookname").StringValue());
}
实现的效果很简单。 就是 把关键字到 intr(也就是简介)中匹配。返回相关的 bookname 最后返回一个列表。
以上是一个很简单的 搜索例子。
有兴趣的 朋友可以 尝试做一些复杂的搜索.
Lucene.net 是 lucene在java下移植到.net上来的。
于是 我打算做一个实验看看效果如何 以下是简单代码
1:建立索引
Lucene.Net.Analysis.Standard.StandardAnalyzer a=new Lucene.Net.Analysis.Standard.StandardAnalyzer();
IndexWriter iw=new IndexWriter(@"E:/1/index",a,true); //E:/1/index 为索引文件存放地址
string conn="数据库连接字符串";
using(DataTable dt=SqlHelper.ExecuteDataset(conn,CommandType.Text,"Select top 100 name,Intr from book ").Tables[0])
{
foreach(DataRow dr in dt.Rows)
{
IndexBook(dr["name"].ToString(),dr["intr"].ToString(),iw); 这是关键
}
}
iw.Optimize();
iw.Close();
MessageBox.Show("succes");
下面请看IndexBook 这个函数
private void IndexBook(string bookname,string bookintr,IndexWriter writer)
{
try
{
Document doc = new Document();
doc.Add(Field.Keyword("bookname", bookname));
doc.Add(Field.Text("intr", bookintr));
writer.AddDocument(doc);
}
catch (FileNotFoundException fnfe)
{
}
}
我一向力求最简单就实现业务需求。 于是上面的函数 8句话也就搞定了。
索引建立完毕。现在我们开始 进行一些简单搜索
项目建立 我不多说了。打字实在麻烦。
我简单说一下 搜索返回代码
Lucene.Net.Search.IndexSearcher search=new Lucene.Net.Search.IndexSearcher(@"E:/1/index"); //把刚才建立的索引取出来
Lucene.Net.Search.Query q=Lucene.Net.QueryParsers.QueryParser.Parse("搜索关键字","intr",new Lucene.Net.Analysis.Standard.StandardAnalyzer());
Lucene.Net.Search.Hits hit =search.Search(q);
lb.Items.Clear(); //lb是我测试程序中的一个 listbox
for(int i=0;i<=hit.Length()-1;i++)
{
lb.Items.Add(hit.Doc(i).GetField("bookname").StringValue());
}
实现的效果很简单。 就是 把关键字到 intr(也就是简介)中匹配。返回相关的 bookname 最后返回一个列表。
以上是一个很简单的 搜索例子。
有兴趣的 朋友可以 尝试做一些复杂的搜索.
相关文章推荐
- 用Lucene.net建立自己的网站搜索
- 用Lucene.net建立自己的网站搜索
- 用nutch和solrnet建立自己的搜索网站
- Lucene.Net实现搜索结果分类统计功能(中小型网站)
- 用Lucene.net对数据库建立索引及搜索
- asp.net,C#,sqlserver,数据库,iis,js,异常,兼容,搜索,性能,备份,编辑器,存取分离,lucene,SEO优化,产品,运营,MVC,三层架构,nhibernate,microsoft,freamwork,网站开发联盟群号:
- 用Lucene.net对数据库建立索引及搜索
- Lucene.NET建立,搜索多个索引文件
- 电子商务网站搜索架构方案(lucene.net搜索架构方案) 转
- 用Lucene.net对数据库建立索引及搜索
- 使用Lucene.net提升网站搜索速度整合记录
- 使用Lucene.net提升网站搜索速度整合记录
- [转]用Lucene.net对数据库建立索引及搜索
- [lucene]使用lucene建立网站搜索服务
- 用Lucene.net对数据库建立索引及搜索<转>
- win7 利用IIS建立自己的本地.net网站
- 用Lucene.net对数据库建立索引及搜索2
- Lucene.NET使用入门(二)【简单的搜索网站示例】
- 用Lucene.net对数据库建立索引及搜索 (2)
- Lucene.Net建立搜索