Lucene In Action 学习笔记(一)
2013-03-11 10:17
405 查看
1.1 怎样应对信息爆炸时代
信息检索技术1.2 Lucene是什么
1.2.1 Lucene是什么
Lucene是一款高性能的,可扩展的信息检索工具库。信息检索是指文档搜索,文档内信息搜索,文档相关元数据操作。
信息检索(Information retrieval)
使用lucene后,你会发现它为你提供了一套#简单而强大的核心API#。
1.2.2 Lucene 能做些什么
Lucene只是一个软件类库,或者一个工具箱。而并是不一个完整的搜索程序。Lucene专注于#文本索引#和#搜索#功能,并且运行效果非常不错。1.3 Lucene中的组件
1.3.1 索引组件
(1)获取内容:lucene 作为一款核心搜索库,并不提供任何功能来实现内容获取开源爬虫工具:Nutch,Solr,Grub
(2)建立文档: 将下载抓取的内容转换成文档的形式。
(3)文档分析:将文本分割成一系列被称为语汇单元的独立的原子元素。
(4)文档索引:文档被加入到索引列表。
1.3.2 搜索组件
搜索处理的过程就是从索引中查找单词,从而找到包含该单词的文档。搜索质量主要由查准率(precision)和查全率(recall)来衡量。benchmark模块用来检验。
(1)用户搜索界面:简单,美观,结果展现列表。
(2)建立查询条件(build query):lucene 提供了一个叫查询解析器(queryParser)的强大的并发包,可以根据通用的查询语法把用户
输入的文本处理成查询对象。封装查询对象的时候:可以根据自己的语法做一些特殊的处理。比如电子商务网站:会对利率高的商品进行加权。
(3)搜索查询(search query)
查询检索索引并返回与查询语句匹配的文档,返回的结果按查询请求进行排序。
(4)展现结果
用直观,易用的方式为用户展现结果。
1.3.3 其他组件
管理界面,分析界面,搜索范围。1.3.4 lucene 与其他程序整合
在自己的项目中加入Lucene1.4 Lucene实战:程序示例
1.4.1 Index Demo1
1.4.2 Search Demo2
1.5 Lucene 索引和搜索核心类介绍
IndexWriter,Directory,Analyzer,Document,Field1.5.1 IndexWriter
IndexWriter(写索引)是索引的核心组件,这个类负责#创建索引或者修改,删除已有索引#。(提供索引的写入操作,不提供读取和搜索操作)
1.5.2 Directory
根据索引的存储路径,#读取索引文件#,最后传递给Indexwriter类(通过构造方法)。1.5.3 Analyzer
文本文件在被索引之前,需要先经过Analyzer(分析器)处理。Analyzer由IndexWriter在构造中指定,负责从文本文件中提取词汇单元。(如果内容不是纯文本文件,那就需要先将其转换成)文本文档。
1.5.4 Document
Document(文档)对象代表一些域(Field)的集合。可以将Document对象理解为虚拟文档--比如web页面或者文本文件--然后你可以从中取回大量的数据。(Document 对象的结构比较简单,为一个包含多个Field对象的容器;
Field是指包含能被索引的文本内容)。
1.5.5 Field
索引中每个文档都包含一个或者多个不同命名的域,文档可能拥有不止一个同名的域。
1.6 理解搜索过程的核心类
IndexSercher,Term,Query,TermQuery,TopDocs1.6.1 IndexSearcher
这个类公开了几个搜索方法,它是连接索引的中心环节。IndexSearcher不能直接打开索引文件,它间接通过Directory实例在读取索引文件。
最简单的一个方法时,传入查询对象(Query)和查询数,最后返回一个TopDocs对象。
Directory dir=FSDirectory.open(new File("/temp/index"));
IndexSearcher searcher=new IndexSearcher(dir);
Query q = new TermQuery(new Term("contents","lucene"));
TopDocs hits = searcher.search(q,10);
searcher.close();
1.6.2 Term
Term对象是搜索功能的基本单元。Query q = new TermQuery(new Term("contents","lucene"));
TopDocs hits = searcher.search(1,10);
上面的代码,表示让Lucene寻找contents域中包含单词lucene的前十个文档。
1.6.3 Query
Lucene含有许多具体的Query(查询)子类。到目前为止,我们只接触了Lucene Query最基本的子类:TermQuery类。其他的Query子类还有:BooleanQuery,PrefixQuery等。
1.6.4 TermQuery
最简单,最基本的查询项。可以查询匹配出指定域中包含指定的文档 。1.6.5 TopDocs
TopDocs类是一个简单的指针容器。指针一般指向前N个排名的搜索结果(匹配上的文档)。备注:
Lucene 是一个信息检索工具库,而不是一个软件成品。
相关文章推荐
- lucene 学习笔记
- lucene学习笔记(三)lucene搜索查询
- 【转载】Lucene学习笔记(八)--完
- Lucene学习笔记(应用)
- lucene 学习笔记 中文分词
- lucene 学习笔记
- Lucene 学习笔记(一)——基本对象及结构
- java8 in action 学习笔记 一
- 写了第一个lucene程序(lucene学习笔记)
- Lucene in action 笔记 index篇
- lucene 搜索学习笔记 - OK
- Lucene学习笔记
- Lucene 3.5.0学习笔记
- Lucene学习笔记:Field.Store.* 域存储选项
- Lucene in action 笔记 index篇
- ASP.NET MVC4 IN ACTION学习笔记-第一天
- Solr in action学习笔记 第三章 Key Solr Concept
- Cordova in action 学习笔记三:实现网页实现不了的功能
- lucene学习笔记
- 全文检索lucene学习笔记(五)