《Lucene in Action》(第二版) 第一章节的学习总结 ---- 用最少的代码创建索引和搜索
2014-03-14 21:52
399 查看
第一章节是介绍性质,但是通过这一章节的学习,我理解到如下概念:
1.Lucene由两部分组成:索引和搜索。索引是通过对原始数据的解析,形成索引的过程;而搜索则是针对用户输入的查找要求,从索引中找到匹配的内容,并表示出来。
2.索引组件的工作顺序是:原始内容--->获取内容(比如利用网络爬虫,这时取得的还是原始内容,只不过是自己想要的原始内容)--->建立文档(这里就是lucene的索引组件真正开始工作的地方了,解析内容变成lucene自己的document)--->文档分析(利用lucene的各种分析器,analyzer,将文档解析为各种语汇单元)--->形成文档索引(IndexWriter,存储在Directory中)
3.搜索组件的工作顺序是:从用户搜索界面获得用户搜索请求--->建立查询(这是lucene的搜索组件开始工作的地方,建立Query)--->搜索查询(利用indexSearcher,使用Query,在索引所在的Directory中进行搜索处理,并获得匹配的结果topdocs)--->展现结果(用直观的,客户喜欢接受的方式,展现给用户)
4.索引过程的核心类:
IndexWriter:写索引,用于创建新索引或者打开已有索引
Directory:索引的存储位置。这是一个抽象类,因此实际使用的是其子类:FSDirectory(文件系统,存储在非易失设备中), RAMDirectory(内存中)
Analyzer:分析器,从被索引的对象(文档)中提取语汇单元。如果被索引的对象不是纯文本,则先转换成文本文档。分析器的分析对象是文档(Document)。Analyzer也是一个抽象类,实际使用的是其子类。
Document:文档。lucene将原始内容转换成lucene自己能识别的对象,就是这里的Document。Document由各个Field组成,可以认为Document就是包含多个Field对象的容器。
Field:域,由域名和域值组成,还有记录此域如何被存储(store),如何被索引(index)的选项。一个域名可以带多个域值。
5.搜索的核心类
IndexSearcher:可以理解为和IndexWriter是对应的。它是用来搜索由IndexWriter代表的索引的。实际搜索就是调用IndexSearcher对象的search(query对象,要返回的评分最高的文档数量n)方法
Term:字面意思就是术语,它是搜索功能的基本单元,和Field类似,也由域名和域值组成。我是这么理解的:Field和Term的组成相同(至少相似吧)。Field用于索引;而Term用于搜索
Query:查询类,也是一个抽象类,实际用的是其多个子类。Query子类对象的产生方式,目前我总结有两种:一种是通过QueryParser对象的parse(用户输入的查询方式字符串)方式得到;另一种是通过new TermQuery(new Term(域名字符串,域值字符串))来得到。
TermQuery:书上说是lucene提供的最基本的查询类型。用来匹配指定域中包含特定值的文档。不过我目前理解,它就是从term得到query的中间转换的桥梁。
TopDocs:IndexSearcher对象调用search(query对象,要返回的评分最高的文档数量n)方法后的返回值。通过这个对象,可以获得totalHits(匹配搜索条件的实际文档数量),scoreDocs(一个包括搜索结果的scoreDoc对象数组,通过组元素又可以得到具体文档)以及其他参数。
6.我自己认为:还有一个类也是比较核心的,就是IndexReader
1.Lucene由两部分组成:索引和搜索。索引是通过对原始数据的解析,形成索引的过程;而搜索则是针对用户输入的查找要求,从索引中找到匹配的内容,并表示出来。
2.索引组件的工作顺序是:原始内容--->获取内容(比如利用网络爬虫,这时取得的还是原始内容,只不过是自己想要的原始内容)--->建立文档(这里就是lucene的索引组件真正开始工作的地方了,解析内容变成lucene自己的document)--->文档分析(利用lucene的各种分析器,analyzer,将文档解析为各种语汇单元)--->形成文档索引(IndexWriter,存储在Directory中)
3.搜索组件的工作顺序是:从用户搜索界面获得用户搜索请求--->建立查询(这是lucene的搜索组件开始工作的地方,建立Query)--->搜索查询(利用indexSearcher,使用Query,在索引所在的Directory中进行搜索处理,并获得匹配的结果topdocs)--->展现结果(用直观的,客户喜欢接受的方式,展现给用户)
4.索引过程的核心类:
IndexWriter:写索引,用于创建新索引或者打开已有索引
Directory:索引的存储位置。这是一个抽象类,因此实际使用的是其子类:FSDirectory(文件系统,存储在非易失设备中), RAMDirectory(内存中)
Analyzer:分析器,从被索引的对象(文档)中提取语汇单元。如果被索引的对象不是纯文本,则先转换成文本文档。分析器的分析对象是文档(Document)。Analyzer也是一个抽象类,实际使用的是其子类。
Document:文档。lucene将原始内容转换成lucene自己能识别的对象,就是这里的Document。Document由各个Field组成,可以认为Document就是包含多个Field对象的容器。
Field:域,由域名和域值组成,还有记录此域如何被存储(store),如何被索引(index)的选项。一个域名可以带多个域值。
5.搜索的核心类
IndexSearcher:可以理解为和IndexWriter是对应的。它是用来搜索由IndexWriter代表的索引的。实际搜索就是调用IndexSearcher对象的search(query对象,要返回的评分最高的文档数量n)方法
Term:字面意思就是术语,它是搜索功能的基本单元,和Field类似,也由域名和域值组成。我是这么理解的:Field和Term的组成相同(至少相似吧)。Field用于索引;而Term用于搜索
Query:查询类,也是一个抽象类,实际用的是其多个子类。Query子类对象的产生方式,目前我总结有两种:一种是通过QueryParser对象的parse(用户输入的查询方式字符串)方式得到;另一种是通过new TermQuery(new Term(域名字符串,域值字符串))来得到。
TermQuery:书上说是lucene提供的最基本的查询类型。用来匹配指定域中包含特定值的文档。不过我目前理解,它就是从term得到query的中间转换的桥梁。
TopDocs:IndexSearcher对象调用search(query对象,要返回的评分最高的文档数量n)方法后的返回值。通过这个对象,可以获得totalHits(匹配搜索条件的实际文档数量),scoreDocs(一个包括搜索结果的scoreDoc对象数组,通过组元素又可以得到具体文档)以及其他参数。
6.我自己认为:还有一个类也是比较核心的,就是IndexReader
相关文章推荐
- 《Lucene in Action 第二版》第4章节 学习总结 -- Lucene中的分析
- 《Lucene in Action》(第二版) 第二章节的学习总结 ---- IndexWriter+Document+Field
- 《Lucene in Action 第二版》第三章节的学习总结----IndexSearcher以及Term和QueryParser
- 《HBase in Action》 第一章节的学习总结 ---- HBase是个啥
- c#使用Lucene.net创建索引,实现搜索的代码示例
- Lucene.net 从创建索引到搜索的代码范例
- 《HBase in Action》 第二章节的学习总结 ---- HBase基本组成
- lucene3.5学习笔记02--创建索引和建立搜索
- 《TomCat与Java Web开发技术详解》(第二版) 第一章节的学习总结--HTTP组成+基本访问方式
- lucene 4.3 索引的简单创建和搜索代码展示
- lucene学习--创建索引与搜索
- 《Lucene In Action》第三章.搜索
- lucene5学习 - 索引基本操作(创建,查询,更新,删除,分页)
- Lucene5 学习笔记(2) —— 简单介绍 Lucene 搜索功能和索引的修改、删除
- 搜索引擎系列 ---lucene简介 创建索引和搜索初步
- 搜索引擎系列 -lucene简介 创建索引和搜索初步步骤
- 【JQuery学习总结1 】 一些实用的JQuery代码片段收集(筛选,搜索,样式,清除默认值,多选等)
- Lucene学习总结之四:Lucene索引过程分析(1)
- spring in action 学习笔记三:对spring 容器的理解,以及如何利用AnnotationConfigApplicationContext这个容器创建对象
- lucene学习--搜索方法总结