用Lucene.net建立自己的网站搜索

用Lucene.net建立自己的网站搜索   <script src="http://blog.csdn.net/count.aspx?ID=728647&Type=Rank" type="text/javascript"></script>

     在家无聊。便研究一下 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  最后返回一个列表。


以上是一个很简单的 搜索例子。
有兴趣的 朋友可以 尝试做一些复杂的搜索. 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值