欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    Lucene课堂笔记.docx

    • 资源ID:3317024       资源大小:1.50MB        全文页数:22页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    Lucene课堂笔记.docx

    1、Lucene课堂笔记Lucene 入门课程计划:1、 搜索引擎介绍2、 Lucene介绍3、 Lucene全文检索执行过程4、 Lucene入门程序5、 Lucene API详解6、 Lucene对搜素结果排名1 搜索引擎介绍1.1 搜索引擎发展史 萌芽:Archie、Gopher 起步:Robot(网络机器人)的出现与spider(网络爬虫) 发展:excite、galaxy、yahoo 繁荣:infoseek,altaVista,Google和baidu1.2 搜索的常见应用场景应用场景 : 1、 单机软件的搜索(word中的搜索) 2、 站内搜索 (baidu贴吧、论坛、 京东、 tao

    2、bao) 3、 垂直领域的搜索 (docin豆丁、拉勾、100offer) 4、 专业搜索引擎公司 (google、baidu)1.3 搜索数据方式1.3.1 顺序扫描法所谓顺序扫描,例如要找内容包含一个字符串的文件,就是一个文档一个文档的看,对于每一个文档,从头看到尾,如果此文档包含此字符串,则此文档为我们要找的文件,接着看下一个文件,直到扫描完所有的文件。这种方法是顺序扫描方法,数据量大就搜索慢。1.3.2 倒排索引倒排索引(也称为倒排文件)是一种存储了来自文本中的映射的索引数据结构。比如单词或者数字,对应到它们在数据库、一个文件或者一组文件中的位置。它是在文档检索系统中使用的最流行的数据

    3、结构,在搜索引擎中有大规模使用案例例如我们使用新华字典查询汉字,新华字典有偏旁部首的目录(索引),我们查字首先查这个目录,找到这个目录中对应的偏旁部首,就可以通过这个目录中的偏旁部首找到这个字所在的位置(文档)。倒排索引做两件事情:1、 提取资源中关键信息, 建立索引 (目录)2、 搜索时,根据关键字(目录),找到资源的位置1.4 倒排索引1.4.1 相关术语文档(Document):一般搜索引擎处理的对象是互联网网页,对于搜索引擎来讲,Word、PDF、html、XML等不同格式的文件都可以称为文档,一般以文档来表示文本信息。文档集合(Document Collection):由若干文档构成

    4、的集合成为文档集合。比如海量的互联网网页等。文档编号(Document ID):在搜索引擎内部,会为文档集合每个文档赋予一个唯一的内部编号,以作为文档的唯一标识,以便于处理。单词编号(Word ID):与文档编号类似,搜索引擎内部以唯一的编号来表示某个单词,以作为某个单词的唯一表示。倒排索引(Inverted Index):倒排索引是实现单词文档矩阵的一种具体存储形式。通过倒排索引,可以根据单次快速获取包含这个单词的文档列表。倒排索引主要由两个部分组成:单词词典和倒排文件。单词词典(Lexicon):搜索引擎通常的索引单位是单词,单词词典是由文档集合中出现过的所有单词构成的字符串集合,单词词典

    5、内每条索引记载单词本身的一些信息及指向倒排列表的指针。单词也就是我们在搜索时的一些关键字,也称为词条。倒排列表(PostingList):倒排列表记载了出现过某个单词的所有文档的文档列表及单词在该文当中出现的位置信息,每条记录成为一个倒排向(Posting)。根据倒排列表,即可获知哪些文档包含某个单词。倒排文件(Inverted File):所有单词的倒排列表往往顺序地存储在磁盘的某个文件里,这个文件即为倒排文件,倒排文件是存储倒排索引的物理文件。1.4.2 单词-文档单词-文档矩阵的基本模型:该矩阵模型代表的含义:词1在文档1、文档4中出现,文档1包含了词1和词4。词2在文档2、文档5中出现

    6、,文档2包含词2。1.4.3 创建倒排索引过程1.4.4 倒排索引(文件)1.4.4.1 基本倒排索引结构第1列单词ID即为每个单词的编号。第2列即为对应的单词。第3列即为每个单词对应的倒排序表。(比如单词“拉斯”,单词编号为8,倒排序表为3,5,说明文档集合中文档3和文档5包含这个单词。)1.4.4.2 复杂倒排索引结构就编号8拉斯(3:1);(5,1)来说,(3,1)表示“拉斯”在文档3中出现一次,(5,1)表示“拉斯”在文档5中出现1次。1.4.4.3 完整倒排索引结构就编号8拉斯2(3;1;),(5;1;)来说,文档频率2表示在两个文档出现。“”表示单词出现的位置是文档中的第4个单词。

    7、这个倒排索引基本上是一个完备的索引系统了,实际搜索系统的索引结构基本如此。2 Lucene介绍2.1 概念Lucene是apache下的一个开放源代码的全文检索引擎工具包。提供了完整的查询引擎和索引引擎,部分文本分析引擎。Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能。 Lucene是一套用于全文检索和搜寻的开源程式库,由Apache软件基金会支 持和提供 Lucene提供了一个简单却强大的应用程式接口,能够做全文索引和搜寻, 在Java开发环境里Lucene是一个成熟的免费开放源代码工具 Lucene并不是现成的搜索引擎产品,但可以用来制作

    8、搜索引擎产品-solr2.2 Lucene与搜索引擎的区别全文检索系统是按照全文检索理论建立起来的用于提供全文检索服务的软件系统,包括建立索引、处理查询返回结果集、增加索引、优化索引结构等功能。例如:XX搜索、eclipse帮助搜索、淘宝网商品搜索等。搜索引擎是全文检索技术最主要的一个应用,例如XX。搜索引擎起源于传统的信息全文检索理论,即计算机程序通过扫描每一篇文章中的每一个词,建立以词为单位的倒排文件,检索程序根据检索词在每一篇文章中出现的频率和每一个检索词在一篇文章中出现的概率,对包含这些检索词的文章进行排序,最后输出排序的结果。全文检索技术是搜索引擎的核心支撑技术。Lucene和搜索引

    9、擎不同,Lucene是一套用java或其它语言写的全文检索的工具包,为应用程序提供了很多个api接口去调用,可以简单理解为是一套实现全文检索的类库,搜索引擎是一个全文检索系统,它是一个单独运行的软件系统2.3 为什么要学习Lucene原来的方式实现搜索功能,我们的搜索流程如下图:上图就是原始搜索引擎技术,如果用户比较少而且数据库的数据量比较小,那么这种方式实现搜索功能在企业中是比较常见的。但是数据量过多时,数据库的压力就会变得很大,查询速度会变得非常慢。我们需要使用更好的解决方案来分担数据库的压力。现在的方案(使用Lucene),如下图为了解决数据库压力和速度的问题,我们的数据库就变成了索引库

    10、,我们使用Lucene的API的来操作服务器上的索引库。这样完全和数据库进行了隔离。2.4 Lucene官网官网: http:/lucene.apache.org/ 2.5 Lucene主要包包名功能org.apache.lucene.analysis语言分析器,主要用于的切词Lucene提供的分析器实现类在:lucene-analyzers-common-4.10.3.jarorg.apache.lucene.document索引存储时的文档结构管理,类似于关系型数据库的表结构org.apache.lucene.index索引管理,包括索引建立、删除等org.apache.lucene.qu

    11、eryParser查询分析器,实现查询关键词间的运算,如与、或、非等, 生成查询表达式,org.apache.lucene.search检索管理,根据查询条件,检索得到结果org.apache.lucene.store数据存储管理,包括一些I/O操作org.apache.lucene.util公用类3 Lucene全文检索流程3.1 创建索引和搜索流程1、创建索引过程,对要搜索的原始内容进行索引构建一个索引库,索引过程包括:确定原始内容即要搜索的内容获得文档创建文档分析文档索引文档2、红色表示搜索过程,从索引库中搜索内容,搜索过程包括:用户通过搜索界面创建查询执行搜索,从索引库搜索渲染搜索结果

    12、3.2 创建索引过程创建索引的过程其实就是将原始的文档数据创建索引并存储到索引库中的过程。1、 创建document对象(文档)2、 为文档添加Field3、 创建建立索引对象IndexWriter4、 将文档添加到索引库中3.3 基于索引库检索过程1、 将检索内容转成query对象2、 创建检索对象3、 通过检索对象进行检索4、 对检索的结果进行遍历4 Lucene入门程序4.1 创建索引4.1.1 导入jar包4.1.2 代码4.1.3 查看索引库内部结构在该jar的当前目录下,打开cmd窗口,并执行以下的命令,即可打开lukeall。overview视图说明:document视图说明:4

    13、.2 基于索引库检索5 Lucene API详解5.1 创建索引的API5.1.1 DocumentLucene创建索引时的原始文档。5.1.2 IndexableField LongField:long类型,会切词 StringField:string类型,通过StringField构建的字段不会被切词(分词)。 TextField:Text类型,会切词。 new XXXField(name:字段的名称,value:字段的值,store:是否存储到索引库中)5.1.3 Directory用来指定索引库存放的位置。 FSDirectory,指的是文件磁盘的索引路径 RAMDirectory,指

    14、的是内存中的索引路径5.1.4 Analyzer5.1.4.1 概念在对Docuemnt中的内容进行索引之前,需要使用分词器进行分词 ,分词的目的是为了搜索。分词的主要过程就是先分词后过滤。 分词:采集到的数据会存储到document对象的Field域中,分词就是将Document中Field的value值切分成一个一个的词。 过滤:包括去除标点符号过滤、去除停用词过滤(的、是、a、an、the等)、大写转小写、词的形还原(复数形式转成单数形参、过去式转成现在式)等。 什么是停用词?停用词是为节省存储空间和提高搜索效率,搜索引擎在索引页面或处理搜索请求时会自动忽略某些字或词,这些字或词即被称为

    15、Stop Words(停用词)。比如语气助词、副词、介词、连接词等,通常自身并无明确的意义,只有将其放入一个完整的句子中才有一定作用,如常见的“的”、“在”、“是”、“啊”等。 注意:搜索使用的分析器要和索引使用的分析器一致5.1.4.2 中文分词器学过英文的都知道,英文是以单词为单位的,单词与单词之间以空格或者逗号句号隔开。所以对于英文,我们可以简单以空格判断某个字符串是否为一个单词,比如I love China,love 和 China很容易被程序区分开来。而中文则以字为单位,字又组成词,字和词再组成句子。中文“我爱中国”就不一样了,电脑不知道“中国”是一个词语还是“爱中”是一个词语。把中

    16、文的句子切分成有意义的词,就是中文分词,也称切词。我爱中国,分词的结果是:我、爱、中国。 StandardAnalyzer:单字分词:就是按照中文一个字一个字地进行分词。如:“我爱中国”,效果:“我”、“爱”、“中”、“国”。 CJKAnalyzer二分法分词:按两个字进行切分。如:“我是中国人”,效果:“我是”、“是中”、“中国”“国人”5.1.4.3 第三方的中文分词器 paoding: 庖丁解牛最新版在中最多支持Lucene 3.0,且最新提交的代码在 2008-06-03,在svn中最新也是2010年提交,已经过时,不予考虑。 mmseg4j:最新版已从移至 4.10,且在github

    17、中最新提交代码是2014年6月,从09年14年一共有:18个版本,也就是一年几乎有3个大小版本,有较大的活跃度,用了mmseg算法。 IK-analyzer: 最新版在 4.10从2006年12月推出1.0版开始, IKAnalyzer已经推出了4个大版本。最初,它是以开源项目Luence为应用主体的,结合词典分词和文法分析算法的中文分词组件。从3.0版本开 始,IK发展为面向Java的公用分词组件,独立于Lucene项目,同时提供了对Lucene的默认优化实现。在2012版本中,IK实现了简单的分词 歧义排除算法,标志着IK分词器从单纯的词典分词向模拟语义分词衍化。 但是也就是2012年12

    18、月后没有在更新。 ansj_seg:最新版本在tags仅有1.1版本,从2012年到2014年更新了大小6次,但是作者本人在2014年10月10日说明:“可能我以后没有精力来维护ansj_seg了”,现在由”nlp_china”管理。2014年11月有更新。并未说明是否支持Lucene,是一个由CRF(条件随机场)算法所做的分词算法。 imdict-chinese-analyzer:最新版在, 最新更新也在2009年5月,下载源码,不支持Lucene 4.10 。是利用HMM(隐马尔科夫链)算法。5.2 基于索引库检索的API5.2.1 QueryParser作用:根据哪个字段并分词检索。5.

    19、2.2 MultiFieldQueryParser作用:指定多个字段检索并分词5.2.3 TermQuery作用:根据词条进行检索,不会切词了,因为词条已是最小单位。5.2.4 WildcardQuery作用:模糊检索5.2.5 FuzzyQuery作用:相似度检索FuzzyQuery的构造方法:FuzzyQuery(Term term):默认支持模糊字数为2;FuzzyQuery(Term term, int maxEdits):maxEdits:模糊字数,0,2之间,若为0,相当于TermQuery。FuzzyQuery(Term term, int maxEdits, int prefi

    20、xLength):prefixLength,指定要有多个前缀字母必须完全匹配。5.2.6 NumericRangeQuery作用:数字范围搜索(演示:略),最后两个参数的含义是:minInclusive,是否最小包含,maxInclusive,是否包含最大值5.2.7 MatchAllDocsQuery作用:查询所有5.2.8 BooleanQuery作用:组合查询1、MUST和MUST表示“与”的关系,即“交集”,相当与AND。 2、MUST和MUST_NOT前者包含后者不包含。 3、MUST_NOT和MUST_NOT没意义 4、SHOULD与MUST表示MUST,SHOULD失去意义; 5

    21、、SHOULD与MUST_NOT相当于MUST与MUST_NOT。 6、SHOULD与SHOULD表示“或”的关系,相当与OR。5.3 更新和删除索引6 Lucene对结果排名和高亮6.1 结果排名6.1.1 Lucene文档的得分算法idf举例:有很多不同的数学公式可以用来计算TF-IDF。这边的例子以上述的数学公式来计算。词频 (TF) 是一词语出现的次数除以该文件的总词语数。假如一篇文件的总词语数是100个,而词语“母牛”出现了3次,那么“母牛”一词在该文件中的词频就是3/100=0.03。一个计算文件频率 (DF) 的方法是测定有多少份文件出现过“母牛”一词,然后除以文件集里包含的文件

    22、总数。所以,如果“母牛”一词在1,000份文件出现过,而文件总数是10,000,000份的话,其逆向文件频率就是 lg(10,000,000 / 1,000)=4。最后的TF-IDF的分数为0.03 * 4=0.12。6.1.2 改变boost值来改变文档得分boost,激励因子,默认值是1,可以手动更改。我们可以设置boost值来改变搜索结果排名。而且设置boost值后,该信息保存在Document文档的norm中。6.1.3 实现排名6.2 结果高亮6.2.1 概念结果高亮:对结果添加HTML标签,并通过css样式修饰。6.2.2 实现7 Jsoup网页爬取工具是一款java的html解析器,可直接解析某个Url地址,html文本内容,有一套非常省力的api 可通过dom,css以及类似于jquery的操作方法取出和操作数据


    注意事项

    本文(Lucene课堂笔记.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开