Lucene.net学习随笔

本文介绍Lucene.net的基本概念、使用方法,包括索引创建与搜索操作,旨在帮助初学者快速上手全文检索技术。

	 今天看了一下一直想学的Lucene.net,一直以来都仰慕它强大的检索功能,今天上网查了些资料,学习了一下基础的,适合一点也不知道Lucene.net的大虾,纯属自我了解,自我心得,有疏漏和不妥之处,还望各位资深人士多多点拨。

Lucene.net是Lucene的.net版本,是用于实现全文检索的一组API,简单理解就是那些专家写的实现全文检索功能的一些函数封装起来,供其他需要使用全文检索功能的开发人员调用。

了解了它是什么,下面看下他的用法:

一、既然是检索全文,那么就要涉及到索引的创建了

1、首先通过Analyzer分析数据,比如说分割单词(ANALYZED),过滤无效词(的、in),优化关键词(搜索he、统配her等)。

	/// <summary>   
        /// 建立索引字段   
        /// </summary>   
        /// <param name="writer"></param>   
        /// <param name="title"></param>   
        /// <param name="content"></param>   
        protected void AddDocument(IndexWriter writer, string title, string content)
        {
            Document document = new Document();
            document.Add(new Field("title", title, Field.Store.NO, Lucene.Net.Documents.Field.Index.TOKENIZED));
            document.Add(new Field("content", content, Field.Store.NO, Field.Index.TOKENIZED));
            writer.AddDocument(document);
        }

2、Lucene是把分析好的数据存储到文件中,使用IndexWriter类写入;lucene使用Field的对关键字的描述(相当于数据表的字段),比如,关键字的出现的频率,位置等,而使用document存放每一条检索到的数据(相当于数据表的Row),最后把document逐行写入文件,索引创建完成。

	/// <summary>   
        /// 创建索引   
        /// </summary>   
        protected void CreatedIndex()
        {
            //全文分析:由于lucene是基于关键词索引和查询的,首先我们要取得这两篇文章的关键词,通常我们需要如下处理措施                                                  a.我们现在有的是文章内容,即一大串字符串,我们先要找出全文字符串中的所有单词,即分词。英文单词由于用空格分隔,比较好处理。中文单词间是连在一起的需要特殊的分词处理。(中文通常用词典的方式比较准确) 									                                        b.文章中的”in”, “once” “too”等词没有什么实际意义,中文中的“的”“是”等字通常也无具体含义,这些不代表概念的词可以过滤掉,即分词解析中的过滤                                                                  											      c.用户通常希望查“He”时能把含“he”,“HE”的文章也找出来,所以所有单词需要统一大小写。即解析过程中的额外处理(用户可以根据自己需要增加多重处理)。                                                                                                              					      d.用户通常希望查“live”时能把含“lives”,“lived”的文章也找出来,所以需要把“lives”,“lived”还原成“live”即进一步优化处理(可以更人性更友好)    																			      e.文章中的标点符号通常不表示某种概念,也可以过滤掉												    Analyzer analyzer = new StandardAnalyzer();
            string path = Server.MapPath("~/IndexDir");  //设置索引存储的路径
            IndexWriter writer = new IndexWriter(path, analyzer, true);
            AddDocument(writer, "SQL Server 2008 的发布", "SQL Server 2008 的新特性");
            AddDocument(writer, "SQL Server 2012 的发布", "SQL Server 2012 的新特性");
            AddDocument(writer, "ASP.Net MVC框架配置与分析", "而今,微软推出了新的MVC开发框架,也就是Microsoft ASP.NET 3.5 Extensions");
            writer.Optimize();  
            writer.Close();
        }

二、开始搜索

正在研究,研究好就和大家分享。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值