尚学堂科技张志宇luceneppt课件.ppt

上传人:豆**** 文档编号:59517905 上传时间:2022-11-10 格式:PPT 页数:96 大小:711KB
返回 下载 相关 举报
尚学堂科技张志宇luceneppt课件.ppt_第1页
第1页 / 共96页
尚学堂科技张志宇luceneppt课件.ppt_第2页
第2页 / 共96页
点击查看更多>>
资源描述

《尚学堂科技张志宇luceneppt课件.ppt》由会员分享,可在线阅读,更多相关《尚学堂科技张志宇luceneppt课件.ppt(96页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、手把手教程V3.0版权所有:尚学堂科技http:/尚学堂尚学堂科技张志宇luceneppt课件 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望手把手教程V3.0版权所有:尚学堂科技http:/尚学堂课程内容第一章:第一章:lucene简介简介第二章:入门实例第二章:入门实例第三章:内建第三章:内建Query对象对象第四章:分析器第四章:分析器Analyzer第五章:第五章:QueryParser第六章:索引第六章:索引第七章:排序第七章:排序第八章:过滤第八章:过

2、滤项目实践:构建一个简单的项目实践:构建一个简单的WEB搜索程序搜索程序手把手教程V3.0版权所有:尚学堂科技http:/尚学堂第一章:Lucene简介搜索引擎的历史什么是Lucene全文检索系统的结构全文检索系统的结构为什么使用LuceneLucene倒排索引原理倒排索引原理LuceneImplementations基于Lucene的搜索程序CompassNutch开源搜索引擎列表全球商用搜索市场Heritrix介绍课堂练习:Heritrix简单抓取任务的设置手把手教程V3.0版权所有:尚学堂科技http:/尚学堂搜索引擎的历史萌芽:Archie、Gopher起步:Robot(网络机器人)的

3、出现与Spider(网络爬虫)发展:Excite、Galaxy、Yahoo等繁荣:Infoseek、AltaVista、Google和Baidu手把手教程V3.0版权所有:尚学堂科技http:/尚学堂什么是LuceneLucene是非常优秀的成熟的开源开源的免费免费的纯纯java语言语言的全文索引检索工具包。全文检索全文检索是指计算机索引程序通过扫描文章中的每一个词,对每一是指计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的

4、结果反询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索方式。馈给用户的检索方式。Lucene是一个高性能、可伸缩的信息搜索(IR)库。InformationRetrieval(IR)library.它使你可以为你的应用程序添加索引和搜索能力。Lucene的作者DougCutting是资深的全文索引/检索专家,最开始发布在他本人的主页上,2001年10月贡献给APACHE,成为APACHE基金的一个子项目。http:/jakarta.apache.org/lucene/Lucene是一个IR库而不是现成的产品,当然也不是Lucene的初识者常常认为的web爬行器手把手教

5、程V3.0版权所有:尚学堂科技http:/尚学堂全文检索系统的结构全文检索系统的结构.手把手教程V3.0版权所有:尚学堂科技http:/尚学堂为什么使用LuceneLucene作为一个全文检索引擎,其具有如下突出的优点:(1)索引文件格式独立于应用平台索引文件格式独立于应用平台。Lucene定义了一套以8位字节为基础的索引文件格式,使得兼容系统或者不同平台的应用能够共享建立的索引文件。(2)在传统全文检索引擎的倒排索引倒排索引的基础上,实现了分块索引,能够针对新的文件建立小文件索引,提升索引速度。然后通过与原有索引的合并,达到优化的目的。(3)优秀的面向对象的系统架构优秀的面向对象的系统架构,

6、使得对于Lucene扩展的学习难度降低,方便扩充新功能。(4)设计了独立于语言和文件格式的文本分析接口,索引器通过接受Token流完成索引文件的创立,用户扩展扩展新的语言和文件格式,只需要实现文本分析的接口。(5)已经默认实现了一套强大的查询引擎查询引擎,用户无需自己编写代码即使系统可获得强大的查询能力,Lucene的查询实现中默认实现了布尔操作、模糊查询(FuzzySearch)、分组查询等等。开源,可扩展能力强可扩展能力强,有各种语言版本,适合各种平台,手把手教程V3.0版权所有:尚学堂科技http:/尚学堂Lucene倒排索引原理倒排索引原理假设有两篇文章1和2文章1的内容为:Tomli

7、vesinGuangzhou,IliveinGuangzhoutoo.文章2的内容为:HeoncelivedinShanghai.经过分词处理后文章1的所有关键词为:tomliveguangzhouiliveguangzhou文章2的所有关键词为:heliveshanghai加上“出现频率”和“出现位置”信息后,我们的索引结构为:关键词文章号出现频率出现位置guangzhou123,6he211i114live12,212,5,2shanghai213tom111手把手教程V3.0版权所有:尚学堂科技http:/尚学堂Lucene只关注文本的索引和搜索手把手教程V3.0版权所有:尚学堂科技ht

8、tp:/尚学堂LuceneImplementationsLuceneimplementationsinlanguagesotherthanJava:CLucene-LuceneimplementationinC+dotLucene-Luceneimplementationin.NETLucene4c-LuceneimplementationinCLuceneKit-LuceneimplementationinObjective-C(Cocoa/GNUstepsupport)Lupy-LuceneimplementationinPython(RETIRED)NLucene-anotherLuce

9、neimplementationin.NET(outofdate)ZendSearch-LuceneimplementationintheZendFrameworkforPHP5Plucene-LuceneimplementationinPerlKinoSearch-anewLuceneimplementationinPerlPyLucene-GCJ-compiledversionofJavaLuceneintegratedwithPythonMUTIS-LuceneimplementationinDelphiFerret-LuceneimplementationinRuby手把手教程V3.0

10、版权所有:尚学堂科技http:/尚学堂基于Lucene的搜索程序ApplicationsandwebapplicationsusingLuceneinclude(alphabetically):ActiveMath-auseradaptive,interactiveandweb-basedlearningenvironmentformathematicsAdunaAutoFocus-avisualdesktopsearchtoolAdunaMetadataServer-RDF-basedindexingserverformetadataandfulltextAhahi-asearchengin

11、e(web,news,image,forum,crawler)AffiliateRanker-anaffiliateprogramsearchengineBigsearch.ca-usesnutch,basedonluceneopensourcesoftwaretodeliveritssearchresults.BibleDesktop-ABiblestudyprogramusinglucenetosearchBiblesBixee-SearchEngineforJobsinIndia.BNCFOpac-OnlinePublicAccessCatalog,indexingdatainunima

12、rcslimformatAustraliaUnclassified-Australias100%FREEonlineclassifiedsserviceCeloxis-webbasedprojectmanagementtoolCodeCrawler-isasmart,web-basedsearchenginespecificallybuiltforusebydevelopersforsearchingsourcecode.Coolposting-asearchenginefordiscussionforums.Coolpostinghelpsyoufindtherealsolutions,ex

13、periencesandopinionspeoplehavepostedindifferentdiscussionforums.CorinisCCM-awebcontentmanagementandcommunitysystemCvMail-webbasedtoolforrecruiters(tomanagejob-applicationsbymail)http:/wiki.apache.org/jakarta-lucene/PoweredBy手把手教程V3.0版权所有:尚学堂科技http:/尚学堂Compass已加入Opensymphony的Compass是对Lucene搜索引擎在企业应用(

14、数据库应用)中的增强。DataMirror会把数据库的增删改变化实时映射到索引文件中,如果没有Compass,我们一般会在每天深夜重建一次索引Compass对查询的对查询的API也作了一定简化,可以考虑使用也作了一定简化,可以考虑使用将Lucene的索引文件放入数据库或内存。对索引文件根据不同的主题分开subIndex。对XML数据进行映射和索引手把手教程V3.0版权所有:尚学堂科技http:/尚学堂Nutch你能大概给我们讲解一下你能大概给我们讲解一下Nutch吗?以及你将在哪方面运用它?吗?以及你将在哪方面运用它?我还是先说一下Lucene吧。Lucene其实是一个提供全文文本搜索的函数库

15、,它不是一个应用软件。它提供很多API函数让你可以运用到各种实际应用程序中。现在,它已经成为Apache的一个项目并被广泛应用着。这里列出一些已经使用Lucene的系统。Nutch是一个建立在是一个建立在Lucene核心之上的核心之上的Web搜索的实现搜索的实现,它是一个真正的应用程序。也就是说,你可以直接下载下来拿过来用。它在Lucene的基础上加了网络爬虫和一些和Web相关的东东。其目的就是想从一个简单的站内索引和搜索推广到全球网络的搜索上,就像Google和Yahoo一样。当然,和那些巨人竞争,你得动一些脑筋,想一些办法。我们已经测试过100M的网页,并且它的设计用在超过1B的网页上应该

16、没有问题。当然,让它运行在一台机器上,搜索一些服务器,也运行的很好。手把手教程V3.0版权所有:尚学堂科技http:/尚学堂开源搜索引擎列表1EgothorEgothor是一个用Java编写的开源而高效的全文本搜索引擎。借助Java的跨平台特性,Egothor能应用于任何环境的应用,既可配置为单独的搜索引擎,又能用于你的应用作为全文检索之用。NutchNutch是一个开源Java实现的搜索引擎。它提供了我们运行自己的搜索引擎所需的全部工具。包括全文搜索和Web爬虫。LuceneApacheLucene是一个基于Java全文搜索引擎,利用它可以轻易地为Java软件加入全文搜寻功能。Lucene的

17、最主要工作是替文件的每一个字作索引,索引让搜寻的效率比传统的逐字比较大大提高,Lucen提供一组解读,过滤,分析文件,编排和使用索引的API,它的强大之处除了高效和简单外,是最重要的是使使用者可以随时应自已需要自订其功能。Oxyus是一个纯java写的web搜索引擎。BDDBotBDDBot是一个简单的易于理解和使用的搜索引擎。它目前在一个文本文件(urls.txt)列出的URL中爬行,将结果保存在一个数据库中。它也支持一个简单的Web服务器,这个服务器接受来自浏览器的查询并返回响应结果。它可以方便地集成到你的Web站点中。ZilverlineZilverline是一个搜索引擎,它通过web方

18、式搜索本地硬盘或intranet上的内容。Zilverline可以从PDF,Word,Excel,Powerpoint,RTF,txt,java,CHM,zip,rar等文档中抓取它们的内容来建立摘要和索引。从本地硬盘或intranet中查找到的结果可重新再进行检索。Zilverline支持多种语言其中包括中文。XQEngineXQEngine用于XML文档的全文本搜索引擎.利用XQuery做为它的前端查询语言.它能够让你查询XML文档集合通过使用关键字的逻辑组合.有点类似于Google与其它搜索引擎搜索HTML文档一样.XQEngine只是一个用Java开发的很紧凑的可嵌入的组件.MG4JM

19、G4J可以让你为大量的文档集合构建一个被压缩的全文本索引,通过使内插编码(interpolativecoding)技术.http:/www.open- FTFTTFTTFFTTFF手把手教程V3.0版权所有:尚学堂科技http:/尚学堂一个简单的Filter共设置3中安全级别,要求将安全级别最高的文档过滤掉SECURITY_ADVANCED=0,SECURITY_MIDDLE1,SECURITY_NORMAL=2,publicclassAdvancedSecurityFilterextendsFilterpublicstaticfinalintSECURITY_ADVANCED=0;/安全级别

20、的常量publicBitSetbits(IndexReaderreader)throwsIOExceptionfinalBitSetbits=newBitSet(reader.maxDoc();/首先初始化一个BitSet对象bits.set(0,bits.size()-1);/先将整个集合置为true,表示当前集合内的所有文档都是可以检索到的.Termterm=newTerm(securitylevel,SECURITY_ADVANCED+);/最高安全级别.TermDocstermDocs=reader.termDocs(term);/从索引中取出最高安全级别的文档while(termDo

21、cs.next()bits.set(termDocs.doc(),false);/遍历每一个文档,将相应的set置为falsereturnbits;手把手教程V3.0版权所有:尚学堂科技http:/尚学堂一个简单的Filter的另一种实现方法上一个例子中,使用了IndexReader的较底层的API,还可以在bits方法中进行一次查询,来获得想要的结果.publicclassAdvancedSecurityFilterextendsFilterpublicstaticfinalintSECURITY_ADVANCED=0;/安全级别的常量publicBitSetbits(IndexReader

22、reader)throwsIOExceptionfinalBitSetbits=newBitSet(reader.maxDoc();/首先初始化一个BitSet对象bits.set(0,bits.size()-1);/先将整个集合置为true,表示当前集合内的所有文档都是可以检索到的.Termterm=newTerm(securitylevel,SECURITY_ADVANCED+);/最高安全级别./初始化一个IndexSearcher对象,/查找securitylevel这个field的值是SECURITY_ADVANCED的文档IndexSearchersearcher=newIndex

23、Searcher(reader);Hitshits=searcher.search(newTermQuery(term);for(inti=0;ihits.length();i+)bits.set(hits.id(i),false);/遍历每一个文档,将相应的set置为falsereturnbits;手把手教程V3.0版权所有:尚学堂科技http:/尚学堂一个简单的Filter:在搜索时应用过滤器org.apache.lucene.search.Searcher提供了在检索中应用Filter的方法publicHitssearch(Queryquery,Filterfilter)publicHi

24、tssearch(Queryquery,Filterfilter,Sortsort)Hitshits=searcher.search(q,newAdvancedSecurityFilter();手把手教程V3.0版权所有:尚学堂科技http:/尚学堂内置的过滤器org.apache.lucene.search.Filter提供了几个内置的过滤器DirectKnownSubclasses:BooleanFilter,CachingWrapperFilter,ChainedFilter,ModifiedEntryFilter,PrefixFilter,QueryWrapperFilter,Rang

25、eFilter,RemoteCachingWrapperFilter,TermsFilter手把手教程V3.0版权所有:尚学堂科技http:/尚学堂RangeFilterRangeFilter用于将检索结果限定在某个给定的Field值的范围内publicRangeFilter(StringfieldName,StringlowerTerm,StringupperTerm,booleanincludeLower,booleanincludeUpper)fieldName-field名称lowerTerm范围下界upperTerm范围上届includeLower下届是否包含在范围内includeU

26、pper上届是否包含在范围内RangeFilter提供了静态方法来得到”无上边界/无下边界”的RangeFilter.publicstaticRangeFilterLess(StringfieldName,StringupperTerm)publicstaticRangeFilterMore(StringfieldName,StringlowerTerm)RangeFilterfilter=newRangeFilter(publishdate,1970-01-01,1990-01-01,true,true);手把手教程V3.0版权所有:尚学堂科技http:/尚学堂QueryFilter结果中查

27、询结果中查询QueryFilter使用很简单使用很简单,其构造函数接受一个其构造函数接受一个Query对象对象,该该Query对象可对象可以看作是前一次查询以看作是前一次查询,只要在本次查询时将所构造的只要在本次查询时将所构造的QueryFilter对象作为对象作为参数传入即可参数传入即可Deprecated.use a CachingWrapperFilter with QueryWrapperFilterTermbegin=newTerm(publishdate,1970-01-01);Termend=newTerm(publishdate,1990-01-01);RangeQueryq=newRangeQuery(begin,end,true);QueryFilterfilter=newQueryFilter(q);Termnormal=newTerm(securitylevel,SECURITY_ADVANCED+);TermQueryquery=newTermQuery(normal);IndexSearchersearcher=newIndexSearcher(PATH);Hitshits=searcher.search(query,filter);

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 小学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com