简介
Doug Cutting 于2000年开始的项目 2001年9月后加入apache, Lucene是Doug Cutting的middle name 。 目前Lucene已经是apache的top
level的项目, 已经不在jakarta下面, 同时也有了python,perl,c++,.net, Ruby(进行中)多个版本
1.Lucene 主要的两个任务:indexing and searching Indexing主要使用的类 IndexWriter 较核心的类,index文件由它创建
2.Directory 一个抽象的标示index文件地址的类,有两个实现:FSDirectory和RAMDirectory, 前者是基于文件系统,后者使用内存
3.Analyzer 文件的分析器(听起来别扭,还是叫Analyzer好了)的抽象,这个类用来处理分词(对中文尤其重要,转换大小写(Computer->
computer,实现查询大小写无关),转换词根(computers->computer),消除stop words等,还负责把其他格式文档转换为纯文本等
4.Document 一个Document对应一个文档记录,他有很多Field,用来处理不同的信息,和检索相关
5.Field 有4(5?)种类型的Field, 下面专门列出
6.stop words: 出现频率非常高的一些词汇,它们一般没有检索的意义, 比如英文中的(as a, an, the, in)
7.类型 Analyzed Indexed Stored 说明
Field.Keyword(String,String/Date) Y Y 这个Field用来储存会直接用来检索的比如(身份证号,姓名,日期等)
Field.UnIndexed(String,String) Y 不会用来检索的信息,但是检索后需要显示的,比如,硬件序列号,文档的url地址
Field.UnStored(String,String) Y Y 大段文本内容,会用来检索,但是检索后不需要从index中取内容,可以根据url去load真实的内容
Field.Text(String,String) Y Y Y 检索,获取都需要的内容,直接放index中,不过这样会增大index
Field.Text(String,Reader) Y Y 如果是一个Reader, lucene猜测内容比较多,会采用Unstored的策略.
8.Searching主要使用的类 IndexSearcher 以只读的方式访问index(注意IndexReader不是只读的),需要传给他一个Query对象来搜索
9.Term Term是一个搜索的基本单位,包含一个Field(目标)和一个value(条件),可以直接用new Term("field","condition value")构造
10.Query Query有很多子类,比如BooleanQuery,PhraseQuery等,可以在Term基础上加上逻辑(是 否, 或)
11.TermQuery 一个很基本的Query, 可以由term构造 new TermQuery(term);
12.Hits 包含了搜索的结构,默认按照相关度排序,hits并不会把所有记录(可能很大)直接保存,而是有一个lazy loading机制
tips
13.Lucene允许一个index中的多个Document可以为Heterogeneous(异类) 也就是说,一个Document 有Field (name,price), 下一个Document
可以有Field(name,age),两个Document可以代表完全不同的记录,不过这点我还没有想到有什么特别的用处
如果需要对Field增加内容的, 可以使用doc.add(Field.Text("word",newword));如果doc中已经有word这个Field, newword会被自动加入进去,
原来的会继续存在, 相当于一个"word"实际上对应一个数组,相当于append,Document的编号是不固定的, 如果对index做了修改, document
编号会重新计算 ,如果要删除删除index中的记录,使用IndexReader类完成, IndexReader会先标记删除,真实的删除行为在indexReader关闭
时执行.也就是说IndexReader也会修改index 通过indexReader.undeleteAll()方法只能恢复同一个indexreader实例标记删除的记录
没有update方法,要更新记录, 只能通过delete以后再add来进行, 如果要批量进行, 一次性delete完毕以后关闭Reader再打开Writer来add的
效率较高
分享到:
相关推荐
lucene学习笔记 2.txt lucene学习笔记 3 .txt lucene入门实战.txt Lucene 的学习 .txt Lucene-2.0学习文档 .txt Lucene入门与使用 .txt lucene性能.txt 大富翁全文索引和查询的例子程序.txt 关于lucene2.0...
本人的Lucene2.9学习笔记 本人的Lucene2.9学习笔记 本人的Lucene2.9学习笔记 本人的Lucene2.9学习笔记本人的Lucene2.9学习笔记本人的Lucene2.9学习笔记 本人的Lucene2.9学习笔记
lucene学习笔记,lucene入门必备材料
很好的Lucene学习入门资料。lucene是纯java开发的,支持索引的建立和搜索
第一章 LUCENE基础 2 1.1 索引部分的核心类 2 1.2 分词部分的核心类 2 1.3 搜索部分的核心类 2 第二章 索引建立 3 2.1 创建Directory 3 2.2 创建Writer 3 2.3 创建文档并且添加索引 4 2.4 查询索引的基本信息 5 2.5 ...
1> lucene学习笔记 2> 全文检索的实现机制 【1】lucene学习笔记的目录如下 1. 概述 3 2. lucene 的包结构 3 3. 索引文件格式 3 4. lucene中主要的类 4 4.1. Document文档类 4 4.1.1. 常用方法 4 4.1.2. 示例 4 4.2...
NULL 博文链接:https://kylinsoong.iteye.com/blog/719415
lucene基础学习笔记&源码
NULL 博文链接:https://menglh.iteye.com/blog/347467
介绍lucene3.5的相关技术,包括基本用法、分析器、索引建立与查询,扩展的高亮、分页、以及solr3.5的相关用法
这是本人学习lucene时候做的笔记,内容较详细,通俗易懂,是入门Lucene的好帮手!欢迎下载!
lucene相关学习资料,包括lucene学习笔记,lucene添加中文分词等
NULL 博文链接:https://lpf.iteye.com/blog/1440160