第一章节是介绍性质,但是通过这一章节的学习,我理解到如下概念:

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》(第二版) 第一章节的学习总结 ---- 用最少的代码创建索引和搜索的更多相关文章

  1. 《Lucene in Action 第二版》第4章节 学习总结 -- Lucene中的分析

    通过第四章的学习,可以了解lucene的分析过程是怎样的,并且可以学会如何使用lucene内置分析器,以及自定义分析器.下面是具体总结 1. 分析(Analysis)是什么? 在lucene中,分析就 ...

  2. 《Lucene in Action 第二版》第三章节的学习总结----IndexSearcher以及Term和QueryParser

    本章节告诉我们怎么用搜索.通过这章节的学习,虽然搜索的内部原理不清楚,但是至少应该学会简单的编写搜索程序了本章节,需要掌握如下几个主要API1.IndexSearcher类:搜索索引的门户,发起者. ...

  3. 《Lucene in Action第二版》学习总结---如何在Windows下编译luceneinAction2Edition源码包

    1. 下载此源码包,位置是: www.manning.com/hatcher3,得到:lia2e.tar.gz,然后解压缩得到目录:lia2e,为了以后能辨识,我将此目录改名为:luceneinAct ...

  4. lucene简介 创建索引和搜索初步

    lucene简介 创建索引和搜索初步 一.什么是Lucene? Lucene最初是由Doug Cutting开发的,2000年3月,发布第一个版本,是一个全文检索引擎的架构,提供了完整的查询引擎和索引 ...

  5. Lucene.net 从创建索引到搜索的代码范例

    关于Lucene.Net的介绍网上已经很多了在这里就不多介绍Lucene.Net主要分为建立索引,维护索引和搜索索引Field.Store的作用是通过全文检查就能返回对应的内容,而不必再通过id去DB ...

  6. 《TomCat与Java Web开发技术详解》(第二版) 第一章节的学习总结--HTTP组成+基本访问方式

    1.需要看懂HTML文件中的组成元素的基本含义.不同的组成元素,可以使得HTML支持文本,图片(img,将图片发给客户端),静态音频/视频(embed src,将音频视频发给客户端),超链接(href ...

  7. lucene实战(第二版)学习笔记

    初识Lucene 构建索引 为应用程序添加搜索功能 Lucene的分析过程

  8. python基础教程第二版 第一章

    1.模块导入python以增强其功能的扩展:三种方式实现 (1). >>> Import math >>> math.floor(32.9) 32.0 #按照 模块 ...

  9. 《HBase in Action》 第一章节的学习总结 ---- HBase是个啥

    1.HBase模仿了Google的BigTable,是一种开源的,面向列族的数据库.它基于行键(rowkey),列键(column key)和时间戳(TimeStamp)来建立索引.HBase是建立在 ...

随机推荐

  1. TaobaoVM

    作者:Andoter链接:https://www.zhihu.com/question/275665265/answer/416021488来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商 ...

  2. Jenkins部署+svn

    Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作,功能包括: 1.持续的软件版本发布/测试项目. 2.监控外部调用执行的工作.       确保java工作环境jdk.tom ...

  3. POJ 1795 DNA Laboratory(状压DP)

    [题目链接] http://poj.org/problem?id=1795 [题目大意] 给出n个字符串,求一个最小长度的串,该串包含给出的所有字符串. 要求长度最小且字典序最小. [题解] dp[i ...

  4. 【bzoj2160】【啦啦队排练】manacher(马拉车)+差分+快速幂

    [pixiv] https://www.pixiv.net/member_illust.php?mode=medium&illust_id=34562780 向大(hei)佬(e)势力学(di ...

  5. Matlab中find函数陷阱

    a = [ 1 2 3 3  3]; 如果a==3 返回[ 0 0 1  1 1]; find(a==3) 返回[3 4 5],这才是想要的下标.

  6. 【转】三种方式在C++中调用matlab

      C/C++调用Matlab 在工程实践中,C/C++调用Matlab 的方法主要有调用Matlab 计算引擎.包含m 文件转 换的C/C++文件,以及调用m文件生成的DLL 文件. 1 利用Mat ...

  7. numpy 多维数组的存取

    多维数组的存取和一维数组类似,由于多维数组有多个轴,所以他的下标需要多个值来表示.这里讨论的主要是二维数组.二维数组0轴以行为单位,1轴以列为单位,存取数组使用元组作为下标,需要注意的是,python ...

  8. 常用函数 __MySQL必知必会

    ----------------------使用数据处理函数 ---------------------- 常见的文本处理函数 Left() 返回串左边的字符Length() 返回串的长度Locate ...

  9. C#使用StreamWriter类写入文件文件

    除了使用FileStream类读写文本文件,.net还提供了StreamWriter类和StreamReader类专门处理文本文件.这两个类从底层封装了文件流,读写时不用重新编码,提供了更文件的读写方 ...

  10. http://blog.csdn.net/i_bruce/article/details/39555417

    http://blog.csdn.net/i_bruce/article/details/39555417