SlideShare a Scribd company logo
1 of 16
晋元 2010/5/16
前端操作
用户
搜索引
擎接口
Query
Query
parser
Index files
Search
排序
Results
后端操作
Indexer网页爬虫 Web pagesWWW
Web pages
Request
图2-1 Web 搜索体系结构
 取代传统关系数据库系统做不了的事情让最相关
的100条结果满足98%以上的用户需求
 只要是存储的文件Lucene都能进行检索,文件
不拘泥于特定的格式,具体平台无关性。
 设立了独立于语言和文件格式的文本分析接口,
索引器通过接受Token流完成索引文件的创立,
用户易于扩展新的语言和文件格式,只需要实现
文本分析的接口。
 Lucene是开源的。
 ……
 其他有待于熟悉Isearch缺点和机制的同学报料
 在使用模糊查询数据库中的数据时,数据库会对字段进行模糊匹配,它将
遍历所有的记录,因此使用模糊查询在查询大量数据的时候是低效的。
Lucene则适用于对海量数据的检索,特别是对数据库或大数据库的类型。
 相对于大多数据库基于B树实现的索引,Lucene的效率更高,因为它优化
了索引的算法,采用了一种称为反向索引的机制。反向索引就是说维护了
一个词/短语表,对于这个表中的每个单词/短语,都有一个链表描述了有
哪些文档包含了这个词/短语。这样在用户输入查询条件的时候,就能非常
地得到搜索结果。 (关于反向索引的详细介绍,请参考WWW)
 总体上看:可以先把Lucene当成一个支持全文索引的数据库系统
 …… 有兴致的时候,可以进一步的了解。
文件
系统
数据
库
Web 其他
输入
收集数据
用户
获取搜索条件 返回搜素结果
索引文档
索引
搜索索引
图 9-1 Lucene 典型的工作流程
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 用来保存搜索得到的结果。
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。
简单地介绍下这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索引的存储位置,这是一个抽象类,目前具体实现有两个,第一个是存储在文件系统
中索引的位置;第二个是存储在内存当中索引的位置。
PDF Word HTML
转换 转换转换
纯文本问件
分析
索引
图13-1 Lucene建立索引流程
 搜索引擎建立好索引之后,接下来利用Lucene 所提供的相应类进行搜索。
 在上几页PPT中我们已经知道如何为一个目录下的文本文档建立索引,下面
我们可以在这个索引上进行搜索以找到包含某个关键词或短语的文档。Lucene提供
了几个基础的类来完成这个搜索过程,下面分别简单介绍下这几个类的功能。
Query: 这是一个抽象类,有多个实现,如TermQuery、BooleanQuery、PrefixQuery.这个类
的目的是把用户输入的查询字符串封装成lucene能够识别的Query。
Term: 搜素的基本单位。
TermQuery:是抽象类Query的一个子类,同时也是Lucene支持的最为基本的一个查询类。
IndexSearcher: 是用来在建立好的索引上进行搜素的。它只能以只读的方式打开一个索引。
所以可以有多个IndexSearcher的实例在一个索引上进行操作。
Hits:用于保存搜素的结果
 Eclipse:帮助部分的的全文搜索
 Apache:首页搜索
 ……
Bye !

More Related Content

Viewers also liked

ゲームインフラと解析基盤 そのものの考え方を変えるAWS
ゲームインフラと解析基盤 そのものの考え方を変えるAWSゲームインフラと解析基盤 そのものの考え方を変えるAWS
ゲームインフラと解析基盤 そのものの考え方を変えるAWSYasuhiro Horiuchi
 
AWSによるソーシャルアプリ運用事例
AWSによるソーシャルアプリ運用事例AWSによるソーシャルアプリ運用事例
AWSによるソーシャルアプリ運用事例Yasuhiro Horiuchi
 
AWSアップデート (DB縛り) in 第18回 JAWS-UG 東京 勉強会
AWSアップデート (DB縛り) in 第18回 JAWS-UG 東京 勉強会AWSアップデート (DB縛り) in 第18回 JAWS-UG 東京 勉強会
AWSアップデート (DB縛り) in 第18回 JAWS-UG 東京 勉強会Yasuhiro Horiuchi
 
AWS サービスアップデートまとめ 2014年3月
AWS サービスアップデートまとめ 2014年3月AWS サービスアップデートまとめ 2014年3月
AWS サービスアップデートまとめ 2014年3月Yasuhiro Horiuchi
 
AWS サービスアップデートまとめ 2013年9月
AWS サービスアップデートまとめ 2013年9月AWS サービスアップデートまとめ 2013年9月
AWS サービスアップデートまとめ 2013年9月Yasuhiro Horiuchi
 
AWS サービスアップデートまとめ 2014年5月
AWS サービスアップデートまとめ 2014年5月AWS サービスアップデートまとめ 2014年5月
AWS サービスアップデートまとめ 2014年5月Yasuhiro Horiuchi
 

Viewers also liked (11)

ゲームインフラと解析基盤 そのものの考え方を変えるAWS
ゲームインフラと解析基盤 そのものの考え方を変えるAWSゲームインフラと解析基盤 そのものの考え方を変えるAWS
ゲームインフラと解析基盤 そのものの考え方を変えるAWS
 
AWSによるソーシャルアプリ運用事例
AWSによるソーシャルアプリ運用事例AWSによるソーシャルアプリ運用事例
AWSによるソーシャルアプリ運用事例
 
AWSアップデート (DB縛り) in 第18回 JAWS-UG 東京 勉強会
AWSアップデート (DB縛り) in 第18回 JAWS-UG 東京 勉強会AWSアップデート (DB縛り) in 第18回 JAWS-UG 東京 勉強会
AWSアップデート (DB縛り) in 第18回 JAWS-UG 東京 勉強会
 
Adorn Mineral Cosmetics CSR Case Study
Adorn Mineral Cosmetics CSR Case StudyAdorn Mineral Cosmetics CSR Case Study
Adorn Mineral Cosmetics CSR Case Study
 
AWS サービスアップデートまとめ 2014年3月
AWS サービスアップデートまとめ 2014年3月AWS サービスアップデートまとめ 2014年3月
AWS サービスアップデートまとめ 2014年3月
 
AWS サービスアップデートまとめ 2013年9月
AWS サービスアップデートまとめ 2013年9月AWS サービスアップデートまとめ 2013年9月
AWS サービスアップデートまとめ 2013年9月
 
AWS サービスアップデートまとめ 2014年5月
AWS サービスアップデートまとめ 2014年5月AWS サービスアップデートまとめ 2014年5月
AWS サービスアップデートまとめ 2014年5月
 
Ppt
PptPpt
Ppt
 
Leai Investor Deck
Leai Investor DeckLeai Investor Deck
Leai Investor Deck
 
LEAI Investor Deck
LEAI Investor DeckLEAI Investor Deck
LEAI Investor Deck
 
Grne investor deck
Grne investor deckGrne investor deck
Grne investor deck
 

Similar to Lucene

开放源代码的全文检索Lucene
开放源代码的全文检索Lucene开放源代码的全文检索Lucene
开放源代码的全文检索Luceneyiditushe
 
Sphinx 全文检索实践指南
Sphinx 全文检索实践指南Sphinx 全文检索实践指南
Sphinx 全文检索实践指南Shaoning Pan
 
Java 的開放原碼全文搜尋技術 - Lucene
Java 的開放原碼全文搜尋技術 - LuceneJava 的開放原碼全文搜尋技術 - Lucene
Java 的開放原碼全文搜尋技術 - Lucene建興 王
 
ILS and Discovery System: OSS, RDA and others
ILS and Discovery System: OSS, RDA and othersILS and Discovery System: OSS, RDA and others
ILS and Discovery System: OSS, RDA and otherscatwizard
 
基於語意網的搜尋引擎
基於語意網的搜尋引擎基於語意網的搜尋引擎
基於語意網的搜尋引擎guestbb1b48
 
Web开发与运维安全浅见
Web开发与运维安全浅见Web开发与运维安全浅见
Web开发与运维安全浅见mysqlops
 
Web开发与运维安全浅见
Web开发与运维安全浅见Web开发与运维安全浅见
Web开发与运维安全浅见CFC4N CHEN
 
腾讯大讲堂45 解剖ttc
腾讯大讲堂45 解剖ttc腾讯大讲堂45 解剖ttc
腾讯大讲堂45 解剖ttcareyouok
 
腾讯大讲堂45 解剖ttc
腾讯大讲堂45 解剖ttc腾讯大讲堂45 解剖ttc
腾讯大讲堂45 解剖ttctopgeek
 
PHP WEB 应用组织与结构
PHP WEB 应用组织与结构PHP WEB 应用组织与结构
PHP WEB 应用组织与结构HonestQiao
 
南投縣國民中小學圖書館聯盟管理建議
南投縣國民中小學圖書館聯盟管理建議南投縣國民中小學圖書館聯盟管理建議
南投縣國民中小學圖書館聯盟管理建議maolins
 
南投縣國民中小學圖書館聯盟管理建議
南投縣國民中小學圖書館聯盟管理建議南投縣國民中小學圖書館聯盟管理建議
南投縣國民中小學圖書館聯盟管理建議maolins
 
Itpub电子杂志第四期第二稿
Itpub电子杂志第四期第二稿Itpub电子杂志第四期第二稿
Itpub电子杂志第四期第二稿yiditushe
 
腾讯大讲堂45 解剖ttc
腾讯大讲堂45 解剖ttc腾讯大讲堂45 解剖ttc
腾讯大讲堂45 解剖ttcGeorge Ang
 
教學投影片01_Vb2005
教學投影片01_Vb2005教學投影片01_Vb2005
教學投影片01_Vb2005洋夫 葉
 
Kid171 chap03 traditional Chinese Version
Kid171 chap03 traditional Chinese VersionKid171 chap03 traditional Chinese Version
Kid171 chap03 traditional Chinese VersionFrank S.C. Tseng
 
Ajax设计技术
Ajax设计技术Ajax设计技术
Ajax设计技术yiditushe
 
Oracle北大青鸟完全教程
Oracle北大青鸟完全教程Oracle北大青鸟完全教程
Oracle北大青鸟完全教程yiditushe
 
Mr&ueh数据库方面
Mr&ueh数据库方面Mr&ueh数据库方面
Mr&ueh数据库方面Tianwei Liu
 

Similar to Lucene (20)

开放源代码的全文检索Lucene
开放源代码的全文检索Lucene开放源代码的全文检索Lucene
开放源代码的全文检索Lucene
 
Sphinx 全文检索实践指南
Sphinx 全文检索实践指南Sphinx 全文检索实践指南
Sphinx 全文检索实践指南
 
Java 的開放原碼全文搜尋技術 - Lucene
Java 的開放原碼全文搜尋技術 - LuceneJava 的開放原碼全文搜尋技術 - Lucene
Java 的開放原碼全文搜尋技術 - Lucene
 
ILS and Discovery System: OSS, RDA and others
ILS and Discovery System: OSS, RDA and othersILS and Discovery System: OSS, RDA and others
ILS and Discovery System: OSS, RDA and others
 
敦群學院-SharePoint精英計畫-系統管理-Day 2
敦群學院-SharePoint精英計畫-系統管理-Day 2敦群學院-SharePoint精英計畫-系統管理-Day 2
敦群學院-SharePoint精英計畫-系統管理-Day 2
 
基於語意網的搜尋引擎
基於語意網的搜尋引擎基於語意網的搜尋引擎
基於語意網的搜尋引擎
 
Web开发与运维安全浅见
Web开发与运维安全浅见Web开发与运维安全浅见
Web开发与运维安全浅见
 
Web开发与运维安全浅见
Web开发与运维安全浅见Web开发与运维安全浅见
Web开发与运维安全浅见
 
腾讯大讲堂45 解剖ttc
腾讯大讲堂45 解剖ttc腾讯大讲堂45 解剖ttc
腾讯大讲堂45 解剖ttc
 
腾讯大讲堂45 解剖ttc
腾讯大讲堂45 解剖ttc腾讯大讲堂45 解剖ttc
腾讯大讲堂45 解剖ttc
 
PHP WEB 应用组织与结构
PHP WEB 应用组织与结构PHP WEB 应用组织与结构
PHP WEB 应用组织与结构
 
南投縣國民中小學圖書館聯盟管理建議
南投縣國民中小學圖書館聯盟管理建議南投縣國民中小學圖書館聯盟管理建議
南投縣國民中小學圖書館聯盟管理建議
 
南投縣國民中小學圖書館聯盟管理建議
南投縣國民中小學圖書館聯盟管理建議南投縣國民中小學圖書館聯盟管理建議
南投縣國民中小學圖書館聯盟管理建議
 
Itpub电子杂志第四期第二稿
Itpub电子杂志第四期第二稿Itpub电子杂志第四期第二稿
Itpub电子杂志第四期第二稿
 
腾讯大讲堂45 解剖ttc
腾讯大讲堂45 解剖ttc腾讯大讲堂45 解剖ttc
腾讯大讲堂45 解剖ttc
 
教學投影片01_Vb2005
教學投影片01_Vb2005教學投影片01_Vb2005
教學投影片01_Vb2005
 
Kid171 chap03 traditional Chinese Version
Kid171 chap03 traditional Chinese VersionKid171 chap03 traditional Chinese Version
Kid171 chap03 traditional Chinese Version
 
Ajax设计技术
Ajax设计技术Ajax设计技术
Ajax设计技术
 
Oracle北大青鸟完全教程
Oracle北大青鸟完全教程Oracle北大青鸟完全教程
Oracle北大青鸟完全教程
 
Mr&ueh数据库方面
Mr&ueh数据库方面Mr&ueh数据库方面
Mr&ueh数据库方面
 

Lucene

Editor's Notes

  1. 在web应用中,典型的搜索引擎框架包括前端操作以及后端操作。如图1-1 所示。 在前端,用户在搜索引擎接口输入搜索关键词(通常是一个web表单),接着搜素引擎接口将搜索请求解析为搜索引擎可以识别的方式,然后在索引文件上执行搜索操作 ,在经过排序后将搜索结果返回给最终用户。 在后端,网页爬虫或者网页机器人从网络上自动地收集网页,系统中的索引子系统对这些收集来的网页进行解析,然后将这些网页进行索引。
  2. (1)格式转换 Lucene 只能检索纯文本格式的单词流,因此开发者必须先将所需要检索的数据转化为纯文本 (2)分析 可以将这个过程看成是一个过滤器,这个过滤器可以过滤诸如a,an,the,in,on等连接词以及将大写字母转换为小写字母等 (3) 写索引 在输入的数据被分析完之后,就可以添加到索引中了。