Lucene.net学习随笔
来源:互联网 发布:自动发微博淘宝客软件 编辑:程序博客网 时间:2024/05/21 06:34
今天看了一下一直想学的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(); }
二、开始搜索
正在研究,研究好就和大家分享。
- Lucene.net学习随笔
- Lucene(.net)学习
- Lucene(.net)学习
- Lucene.net学习帮助
- Lucene.net学习
- Lucene(.net)学习
- Lucene(.net)学习
- .net MVC 学习随笔
- [.NET随笔系列一].NET学习路线
- Lucene 及 Lucene.net 国内外的一些学习资源汇总
- Lucene 及 Lucene.net 国内外的一些学习资源汇总
- Lucene 及 Lucene.net 国内外的一些学习资源汇总
- Lucene.Net 的学习系列(1)
- Lucene.Net学习系列(2)
- Lucene.Net系列学习(3)
- Lucene.Net系列学习(4)
- Lucene.NET学习笔记(2)
- Lucene.NET学习笔记(3)
- serial 架构分析
- nodejs 之 buffer module
- js操作日期(函数,js版的dateAdd与dateDiff,四舍五入(round()方法)并保留小数点后N位的函数)
- python string模块
- OpenSSL在IIS站点上的应用
- Lucene.net学习随笔
- 随笔
- 猜数字
- [斯坦福ios开发][assignment2]2
- javascript 中的内存泄露
- android IPC及原理简介
- Callable与Future
- 改变一个文件的拥有者,chown的简单介绍
- 字符串比较