- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
传智播客 Java学院 传智.入云龙
全文检索技术之Lucene
课程计划
什么全文检索
数据类型:结构化数据和非结构化数据
非结构化数据查询方法
全文检索的概念
什么是Lucene
Lucene实现全文检索的流程(重点)
Lucene的入门程序(重点)
分析器Analyzer(重点)
索引库的维护(重点)
索引库的增加索引
删除索引
修改索引
索引库的查询(重点)
使用Query的子类查询
使用QueryParser查询
相关的排序
什么全文检索
结构化数据:数据的长度类型是固定的。数据库中的数据
非结构化数据:长度不固定格式不固定。Word文档、excel、pdf、txt。
结构化数据的查询
使用sql语句查询就可以
非结构化数据的查询
需求:在文件中找出包含java字符的文档。
实现方法
目测
顺序扫描。如果文件量大的话比如说20G,顺序扫描会变的很慢。
非结构化的数据变结构化
先从文件中找出文件所有的词汇,形成一个列表。查询的时候直接查询列表,找到关键词后根据这词找到相应的文档。
一次创建多次使用。
全文检索的概念
这种先建立索引,再对索引进行搜索的过程就叫全文检索(Full-text Search)。
全文检索应用领域
搜索引擎,百度、谷歌
站内搜索
微博搜索
论坛搜索
电商搜索,搜索的是商品信息。
什么是Lucene
Lucene的概念
Lucene是apache下的一个开放源代码的全文检索引擎工具包。提供了完整的查询引擎和索引引擎,部分文本分析引擎。Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能。
Lucene和搜索引擎的区别
Lucene是一个工具包:需要进行编程才能实现全文检索的功能呢
搜索引擎:一套独立运行的系统,提供了全文检索功能。
Lucene的下载
下载地址: HYPERLINK / /
本课程Lucene的版本:4.10.3
包名
功能
org.apache.lucene.analysis
语言分析器,主要用于的切词
Lucene提供的分析器实现类在:
lucene-analyzers-common-4.10.3.jar
org.apache.lucene.document
索引存储时的文档结构管理,类似于关系型数据库的表结构
org.apache.lucene.index
索引管理,包括索引建立、删除等
org.apache.lucene.queryParser
查询分析器,实现查询关键词间的运算,如与、或、非等, 生成查询表达式,
org.apache.lucene.search
检索管理,根据查询条件,检索得到结果
org.apache.lucene.store
数据存储管理,包括一些I/O操作
org.apache.lucene.util
公用类
Lucene实现全文检索的流程
案例:
我们以一个案例来研究全文检索系统架构:实现一个文件的搜索功能,通过关键字搜索文件,凡是文件名或文件内容包括关键字的文件都需要找出来。
实现的流程
创建索引
获得文档
使用文件流读取文档的内容就可以获得文档。
搜索引擎:
使用网络爬虫来获得。
Nutch:apache的爬虫程序
Heritrix:爬虫程序
Jsoup:html分析的工具包
电商网站:
数据库中的表,例如商品表。数据库中的每一条记录都是一个原始文档。
Solr:直接从数据库中的表导入到索引库中。
创建文档对象
每个文件对应一个文档对象Document对象。Field域。
每个文档对象Document对象中可以有多个域,每个域可以存储文件的相关属性。
例如:
文件名
文档内容
文件路径
文件的大小
Document
Document
文件内容文件名
文件内容
文件名
文件的大小文件的路径
文件的大小
文件的路径
其他属性。。。
其他属性。。。
不同的文档中域可以不同,同一个文档中可以有相同的域。
分析文档
主要是分析文档的内容,文件的标题。
目的:分析出文档中包含的关键词。
先根据空格进行字符串的拆分得到词汇列表
词汇列表中无意义的词叫做“停用词”。去除停用词。例如:a、the、an
去掉标点符号。
统一大小写,转换成小写。
最终得到语汇单元流。
注意:并不是所有域都需要分析,只需要分析指定的域就可以。
创建索引
将索引和document对象写入索引库。持久化的过程。
创建索引是对语汇单元索引,通过词语找文档,这种索引的结构叫倒排索引结构。
持久就是把索引和document写索引库,索引库包含量部分内容。索引、和document
索引库
索引库
索引
索引
Lucene
Solr
Hadoop
java
Document1
Document1
Document2
Document2
Docum
文档评论(0)