Your SlideShare is downloading. ×
晋元 2010/5/16
前端操作
用户
搜索引
擎接口
Query
Query
parser
Index files
Search
排序
Results
后端操作
Indexer网页爬虫 Web pagesWWW
Web pages
Request
图2-1 Web ...
 取代传统关系数据库系统做不了的事情让最相关
的100条结果满足98%以上的用户需求
 只要是存储的文件Lucene都能进行检索,文件
不拘泥于特定的格式,具体平台无关性。
 设立了独立于语言和文件格式的文本分析接口,
索引器通过接受Token流完成索引文件的创立,
用户易于扩展新的语言和文件格式,只需要实现
文本分析的接口...
 在使用模糊查询数据库中的数据时,数据库会对字段进行模糊匹配,它将
遍历所有的记录,因此使用模糊查询在查询大量数据的时候是低效的。
Lucene则适用于对海量数据的检索,特别是对数据库或大数据库的类型。
 相对于大多数据库基于B树实现的索引...
文件
系统
数据
库
Web 其他
输入
收集数据
用户
获取搜索条件 返回搜素结果
索引文档
索引
搜索索引
图 9-1 Lucene 典型的工作流程
Lucene 被打包成jar 文件进行发布,几个主要的包如下。
◆Package:org.apache.lucene.document
提供了对文档索引的接口,如Document、Field.
◆Package:org.apache.lucen...
Lucene是建立索引的基础上进行搜索操作的,SO必须理解几个索引所需要的术语
□ Document: 一个要进行索引的单元,相当于数据库的一行记录,任何想要被索引的
数据都必须转化为Document的对象存放。
□ Field: Docume...
简单地介绍下这5个类的用途。
(1) Document
Document 是用来描述文档的,既可以指一个HTML 文档,又可以指一封电子邮件或者是一个文本文件。
一个 Documenet 对象由多个Field对象组成。
(2)Field
Fie...
PDF Word HTML
转换 转换转换
纯文本问件
分析
索引
图13-1 Lucene建立索引流程
 搜索引擎建立好索引之后,接下来利用Lucene 所提供的相应类进行搜索。
 在上几页PPT中我们已经知道如何为一个目录下的文本文档建立索引,下面
我们可以在这个索引上进行搜索以找到包含某个关键词或短语的文档。Lucene提供
了几个基础的...
 Eclipse:帮助部分的的全文搜索
 Apache:首页搜索
 ……
Bye !
Lucene
Lucene
Lucene
Upcoming SlideShare
Loading in...5
×

Lucene

1,149

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,149
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • 在web应用中,典型的搜索引擎框架包括前端操作以及后端操作。如图1-1 所示。
    在前端,用户在搜索引擎接口输入搜索关键词(通常是一个web表单),接着搜素引擎接口将搜索请求解析为搜索引擎可以识别的方式,然后在索引文件上执行搜索操作 ,在经过排序后将搜索结果返回给最终用户。
    在后端,网页爬虫或者网页机器人从网络上自动地收集网页,系统中的索引子系统对这些收集来的网页进行解析,然后将这些网页进行索引。
  • (1)格式转换

    Lucene 只能检索纯文本格式的单词流,因此开发者必须先将所需要检索的数据转化为纯文本

    (2)分析

    可以将这个过程看成是一个过滤器,这个过滤器可以过滤诸如a,an,the,in,on等连接词以及将大写字母转换为小写字母等
    (3) 写索引

    在输入的数据被分析完之后,就可以添加到索引中了。
  • Transcript of "Lucene"

    1. 1. 晋元 2010/5/16
    2. 2. 前端操作 用户 搜索引 擎接口 Query Query parser Index files Search 排序 Results 后端操作 Indexer网页爬虫 Web pagesWWW Web pages Request 图2-1 Web 搜索体系结构
    3. 3.  取代传统关系数据库系统做不了的事情让最相关 的100条结果满足98%以上的用户需求
    4. 4.  只要是存储的文件Lucene都能进行检索,文件 不拘泥于特定的格式,具体平台无关性。  设立了独立于语言和文件格式的文本分析接口, 索引器通过接受Token流完成索引文件的创立, 用户易于扩展新的语言和文件格式,只需要实现 文本分析的接口。  Lucene是开源的。  ……  其他有待于熟悉Isearch缺点和机制的同学报料
    5. 5.  在使用模糊查询数据库中的数据时,数据库会对字段进行模糊匹配,它将 遍历所有的记录,因此使用模糊查询在查询大量数据的时候是低效的。 Lucene则适用于对海量数据的检索,特别是对数据库或大数据库的类型。  相对于大多数据库基于B树实现的索引,Lucene的效率更高,因为它优化 了索引的算法,采用了一种称为反向索引的机制。反向索引就是说维护了 一个词/短语表,对于这个表中的每个单词/短语,都有一个链表描述了有 哪些文档包含了这个词/短语。这样在用户输入查询条件的时候,就能非常 地得到搜索结果。 (关于反向索引的详细介绍,请参考WWW)  总体上看:可以先把Lucene当成一个支持全文索引的数据库系统  …… 有兴致的时候,可以进一步的了解。
    6. 6. 文件 系统 数据 库 Web 其他 输入 收集数据 用户 获取搜索条件 返回搜素结果 索引文档 索引 搜索索引 图 9-1 Lucene 典型的工作流程
    7. 7. Lucene 被打包成jar 文件进行发布,几个主要的包如下。 ◆Package:org.apache.lucene.document 提供了对文档索引的接口,如Document、Field. ◆Package:org.apache.lucene.analysis 建立索引之前要对文档进行分析,该包提供了这样的功能接口,为索引作准备工作。 ◆Package:org.apache.lucene.index 提供了一些类来协助创建索引以及对创建好的索引进行更新。里面有两个基础的类:IndexWriter 和 IndexReader,前者用来创建索引并添加文档到索引中,后者用于删除索引中的的文档。 ◆Package:org.apache.lucene.Search 提供了在建立好的索引上进行搜索所需要的类。例如,IndexSearcher 和 Hits,前者定义了在指定索 引上进行搜索的方法,Hits 用来保存搜索得到的结果。
    8. 8. Lucene是建立索引的基础上进行搜索操作的,SO必须理解几个索引所需要的术语 □ Document: 一个要进行索引的单元,相当于数据库的一行记录,任何想要被索引的 数据都必须转化为Document的对象存放。 □ Field: Document中的一个字段,相当于数据库中的Column, Field是 Lucene中用 的比较多的一个术语。 □ IndexWriter: 负责将Document写入索引文件。通常情况下, IndexWriter的构造函 数包括了以下3个参数:索引存放的路径,分析器和是否重新创建索引。特别需要注 意的一点是,当I ndexWriter执行完 addDocument方法后,一定要记得调用自身的 close方法来关闭它。只有调用了close方法后,索引器才会将存放内存中的所有内容 写入磁盘并关闭输出流。 □ Analyzer 分析器:主要用于文本分词。常用的有StandardAnalyzer分析器,Stop Analyzer分析器和WhiteSpaceAnalyzer分析器等。 □ Directory :索引存放的位置。 Lucene提供了两种索引存放的位置,一种是磁盘,一种 是内存。一般情况下将索引放在磁盘上;相应地Lucene提供了FSDirectory和 RAMDiretory. □ Segment段:是Lucene 索引文件最基本的一个单位。 Lucene就是不断地加入新的 Segment,然后按一定的规则算法合并不同的Segment以合成新的Segment。
    9. 9. 简单地介绍下这5个类的用途。 (1) Document Document 是用来描述文档的,既可以指一个HTML 文档,又可以指一封电子邮件或者是一个文本文件。 一个 Documenet 对象由多个Field对象组成。 (2)Field Field 对象是用来描述一个文档的某个属性的,举个例子来说,对于一个HTML文档来说,可以用标题、 内容、发布人、发布日期这4个Field对象分别描述 (3)Analyzer 在一个文档被索引之前,首先需要对文档内容进行分词处理,这部分工作是由Analyzer来做的。这个抽象 类,有多个实现。针对不同的语言和应用程序员需要选择适合的Analyzer. (4)IndexWriter IndexWriter 是Lucene用来创建索引的一个核心类,其作用是把一个个的Document对象加到索引中来。 (5)Directory 这个类代表了Lucene索引的存储位置,这是一个抽象类,目前具体实现有两个,第一个是存储在文件系统 中索引的位置;第二个是存储在内存当中索引的位置。
    10. 10. PDF Word HTML 转换 转换转换 纯文本问件 分析 索引 图13-1 Lucene建立索引流程
    11. 11.  搜索引擎建立好索引之后,接下来利用Lucene 所提供的相应类进行搜索。  在上几页PPT中我们已经知道如何为一个目录下的文本文档建立索引,下面 我们可以在这个索引上进行搜索以找到包含某个关键词或短语的文档。Lucene提供 了几个基础的类来完成这个搜索过程,下面分别简单介绍下这几个类的功能。 Query: 这是一个抽象类,有多个实现,如TermQuery、BooleanQuery、PrefixQuery.这个类 的目的是把用户输入的查询字符串封装成lucene能够识别的Query。 Term: 搜素的基本单位。 TermQuery:是抽象类Query的一个子类,同时也是Lucene支持的最为基本的一个查询类。 IndexSearcher: 是用来在建立好的索引上进行搜素的。它只能以只读的方式打开一个索引。 所以可以有多个IndexSearcher的实例在一个索引上进行操作。 Hits:用于保存搜素的结果
    12. 12.  Eclipse:帮助部分的的全文搜索  Apache:首页搜索  ……
    13. 13. Bye !

    ×