当前位置: 首页 >> 程序设计 >> 用Lucene.net建立自己的网站搜索
 

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

作者:      来源:     发表时间:2006-05-15     浏览次数:      字号:    

在家无聊。便研究一下 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:1index",a,true);   //E:1index  为索引文件存放地址
   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:1index"); //把刚才建立的索引取出来
   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  最后返回一个列表。


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

来源:http://blog.csdn.net/shenyisyn/archive/2006/05/14/728647.aspx

 

责任编辑 webmaster

 
 
 
 
 
评论更多>>
 
 
 
发表
 
姓名: QQ:
性别: MSN:
E-mail: 主页:
评分: 1 2 3 4 5
评论内容:
验证码:
  
  • 请遵守《互联网电子公告服务管理规定》及中华人民共和国其他各项有关法律法规。
  • 严禁发表危害国家安全、损害国家利益、破坏民族团结、破坏国家宗教政策、破坏社会稳定、侮辱、诽谤、教唆、淫秽等内容的评论 。
  • 用户需对自己在使用本站服务过程中的行为承担法律责任(直接或间接导致的)。
  • 本站管理员有权保留或删除评论内容。
  • 评论内容只代表网友个人观点,与本网站立场无关。
  •