chapter2lucene框架基础

上传人:san****019 文档编号:70132243 上传时间:2019-01-16 格式:PPT 页数:47 大小:476.51KB
返回 下载 相关 举报
chapter2lucene框架基础_第1页
第1页 / 共47页
chapter2lucene框架基础_第2页
第2页 / 共47页
chapter2lucene框架基础_第3页
第3页 / 共47页
chapter2lucene框架基础_第4页
第4页 / 共47页
chapter2lucene框架基础_第5页
第5页 / 共47页
点击查看更多>>
资源描述

《chapter2lucene框架基础》由会员分享,可在线阅读,更多相关《chapter2lucene框架基础(47页珍藏版)》请在金锄头文库上搜索。

1、Chapter2 lucene框架基础,陈珂锐 计算机与信息工程学院,目录,1.Lucene简介 2.预备知识-类图 3.Lucene类图 4.入门实例,1. Lucene简介,1.1 什么是Lucene 1.2 全文检索系统的结构 1.3 为什么使用Lucene 1.4 Lucene版本号 1.5 Lucene移植版本 1.6 Lucene倒排索引原理 1.7 基于Lucene的搜索程序 1.8 Nutch,1.1 什么是Lucene,Lucene是非常优秀的成熟的开源的免费的纯java语言的全文索引检索工具包。http:/lucene.apache.org 全文检索是指计算机索引程序通过

2、扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索方式。 Lucene是一个高性能、可伸缩的信息搜索(IR)库。 Information Retrieval (IR) library.它使你可以为你的应用程序添加索引和搜索能力。 Lucene的作者Doug Cutting是资深的全文索引/检索专家,最开始发布在他本人的主页上,2001年10月贡献给APACHE,成为APACHE基金的一个子项目。 http:/jakarta.apache.org/lucene/ Lucene是一个IR

3、库而不是现成的产品, 当然也不是Lucene的初识者常常认为的web爬行器,1.2 全文检索系统的结构,1.3 为什么使用Lucene,Lucene具有如下突出的优点: (1)索引文件格式独立于应用平台。Lucene定义了一套以8位字节为基础的索引文件格式,使得兼容系统或者不同平台的应用能够共享建立的索引文件。 (2)在传统全文检索引擎的倒排索引的基础上,实现了分块索引,能够针对新的文件建立小文件索引,提升索引速度。然后通过与原有索引的合并,达到优化的目的。 (3)优秀的面向对象的系统架构,使得对于Lucene扩展的学习难度降低,方便扩充新功能。 (4)设计了独立于语言和文件格式的文本分析接口

4、,索引器通过接受Token流完成索引文件的创立,用户扩展新的语言和文件格式,只需要实现文本分析的接口。 (5)已经默认实现了一套强大的查询引擎,用户无需编写代码,系统可获得强大的查询能力,Lucene的查询中默认实现了布尔操作、模糊查询(Fuzzy Search)、分组查询等等。 开源,可扩展能力强,有各种语言版本,适合各种平台,1.4 Lucene版本号(1),1.4 Lucene版本号(2),1.5 Lucene 移植版本,Lucene implementations in languages other than Java: CLucene - Lucene implementation

5、 in C+ dotLucene - Lucene implementation in .NET Lucene4c - Lucene implementation in C LuceneKit - Lucene implementation in Objective-C (Cocoa/GNUstep support) Lupy - Lucene implementation in Python (RETIRED) NLucene - another Lucene implementation in .NET (out of date) Zend Search - Lucene implemen

6、tation in the Zend Framework for PHP 5 Plucene - Lucene implementation in Perl KinoSearch - a new Lucene implementation in Perl PyLucene - GCJ-compiled version of Java Lucene integrated with Python MUTIS - Lucene implementation in Delphi Ferret - Lucene implementation in Ruby,1.6 Lucene倒排索引原理,假设有两篇文

7、章1和2 文章1: Tom lives in Guangzhou,I live in Guangzhou too. 文章2: He once lived in Shanghai. 经过分词处理后 文章1的所有关键词为:tom live guangzhou i live guangzhou 文章2的所有关键词为:he live shanghai 加上“出现频率”和“出现位置”信息后,我们的索引结构为:,Lucene只关注文本的索引和搜索!,1.7 基于Lucene的搜索程序,ActiveMath - a user adaptive, interactive and web-based learn

8、ing environment for mathematics Aduna AutoFocus - a visual desktop search tool Aduna Metadata Server - RDF-based indexing server for metadata and full text Ahahi - a search engine (web,news,image,forum,crawler) Affiliate Ranker - an affiliate program search engine Bigsearch.ca - uses nutch, based on

9、 lucene open source software to deliver its search results. BibleDesktop - A Bible study program using lucene to search Bibles,http:/wiki.apache.org/jakarta-lucene/PoweredBy,1.7 基于Lucene的搜索程序,Bixee - Search Engine for Jobs in India. BNCF Opac - Online Public Access Catalog, indexing data in unimarcs

10、lim format Australia Unclassified - Australias 100% FREE online classifieds service Celoxis - web based project management tool CodeCrawler - is a smart, web-based search engine specifically built for use by developers for searching source code. Coolposting - a search engine for discussion forums. C

11、oolposting helps you find the real solutions, experiences and opinions people have posted in different discussion forums. Corinis CCM - a web content management and community system CvMail - web based tool for recruiters (to manage job-applications by mail) ,1.8 Nutch,Nutch 是一个刚刚诞生开放源代码(open-source)

12、的web搜索引擎。 Nutch是采用Lucene核心的一个web搜索引擎的实现 Nutch使用Lucene进行索引,所以所有的Lucene工具和API都可以在Nutch生成的索引上工作。 它是一个真正的应用程序。也就是说,你可以直接下载下来拿过来用。它在Lucene的基础上加了网络爬虫和一些和Web相关的东东。其目的就是想从一个简单的站内索引和搜索推广到全球网络的搜索上,像Google和Yahoo一样。当然,和那些巨人竞争,你得动一些脑筋,想一些办法。,2. 预备知识类图,3. Lucene类图,3. Lucene类图,3.1 基础封装类 3.2 索引核心类 3.3 term 3.4 fiel

13、d 3.5 document 3.6 段(segment),3.1 基础封装类,1.org.apache.lucene.util定义了一些常量和优化过的常用的数据结构和算法。 Arrays:数组的排序方法的静态类,提供了优化的基于快排序的排序方法sort BitVectorC/C+语言中位域的java实现品,但是加入了序列化能力 Constants常量静态类,定义了一些常量 PriorityQueue一个优先队列的抽象类,用于后面实现各种具体的优先队列,提供常数时间内的最小元素访问能力,内部实现机制是哈析表和堆排序算法 2. org.apache.lucene.document文档(docum

14、ent)和域(field)概念的一个类定义,3.2 索引核心类,1. org.apache.lucene.store包 。存储抽象是唯一能够直接对索引文件存取的包,因此其主要目的是抽象出和平台文件系统无关的存储抽象,提供诸如目录服务(增、删文件)、输入流和输出流 2. org.apache.lucene.index包,3.2 索引核心类-store,整个org.apache.lucene.store中主要的继承体系共有三个抽象类定义: Directory InputStream OutputStrem,3.2 索引核心类-store,构成了一个完整的基于抽象文件系统的存取体系结构,在此基础上,

15、实作出了两个实现品:(FSDirectory,FSInputStream,FSOutputStream)和(RAMDirectory,RAMInputStream和RAMOutputStream)。 前者是以实际的文件系统做为基础实现的,后者则是建立在内存中的虚拟文件系统。前者主要用来永久的保存索引文件,后者的作用则在于索引操作时是在内存中建立小的索引,然后一次性的输出合并到文件中去,这一点我们在后面的索引逻辑部分能够看到。,3.2 索引核心类-store,此外,还定以了org.apache.lucene.store.lock和org.apache.lucene.store.with两个辅助内

16、部实现的类用在实现Directory方法的makeLock的时候,以在锁定索引读写之前来让客户程序做一些准备工作 。 (FSDirectory,FSInputStream,FSOutputStream)的内部实现依托于java语言中的io类库,只是简单的做了一个外部逻辑的包装,3.2 索引核心类-store,(RAMDirectory,RAMInputStream和RAMOutputStream)的内部实现就比较直接了,直接采用了虚拟的文件RAMFile类 。RAMFile中采用数组来表示文件的存储空间 Lucene中存储抽象这部分设计时采用了工厂模式(Factory parttern),3.2 索引核心类-store,3.2 索引核心类-store,3.2 索引核心类-store,3.2 索引核心类-index,是一个承上启下的索引核心部分。无论是对外接口中的查询,还是分析各种文本以进一步生成索引,都需要直接调用这部分来获得对索引文件的访问能力 。 上边的基础类已经设计了

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号