Lucene的学习
2021-05-05 23:29
标签:构建 地方 开发 htm pdf 多个 结果 java开发 展示 一,什么是全文检索 1.数据的分类 1.结构化数据 格式固定,长度固定,数据类型固定。 例如:数据库中的数据; 2.非结构化数据 word文档,pdf文档,邮件,html,txt 格式不固定,长度不固定,数据类型也不固定 2.数据的查询 1,结构化数据的查询 Sql语句,查询结构化数据的方法。简单,速度快。 2.非结构化数据的查询 例如:从文本文件中找出包含spring的单词的文件 1.目测 2.使用程序代码来实现,把文件读取到内存中,匹配字符串,顺序扫描。 3.把结构化数据变成结构化数据 (先根据空格进行字符串拆分,得到一个单词列表,基于单词列表创建一个索引 ) 索引:一个为了提高查询速度,创建某种数据结构的集合 然后 查询索引,根据单词和文档对应关系找到文档列表,这个过程就叫全文检索 3.全文检索 先创建索引,然后查询索引的过程,就叫做全文检索。(创建索引时间较长,但是一次创建可以多次使用,平均每次查询的速度就提高了速度) 二,全文搜索的应用场景 1,搜索引擎 百度,360搜索,谷歌,搜狗 2,站内搜索 论坛搜索,微博搜索,文章搜索 3,电商搜索 淘宝搜索,京东搜索 4,只要是有搜索的地方,就可以使用到全文检索技术 三,什么是Lucene Lucene是一个基于java开发的全文检索工具包,java开发中Lucene首选。 四,Lucene实现全文检索的流程。 1,创建索引 1)获得文档 原始文档:要基于那些数据来进行搜索,那么这些数据就是原始文档 搜索引擎:使用爬虫获得原始文档 站内搜索:数据库中的数据。使用jdbc到数据库中取 案列:直接使用io流读取磁盘上的文件。 2)构建文档对象 对应每个原始文档,来创建Document对象。 每个Document对象中包含多个域(Field) 域中保持原始文档的数据。 域的名称;域的值; 每个文档都有一个文档的编号,就是文档id 3)分析文档 就是分词的过程 1.根据空格进行拆分,得到一个单词列表 2.把单词统一转化成大写或者小写 3.去掉标点符号 4.去掉停用词(停用词:无意义的词;如:and) 每个关键词都封装成一个Term对象中,Term中包含两部分内容:关键词包含的域;关键词本身;(不同的域中拆分出来的关键词是不同的Term) 4)创建索引 基于关键词列表来创建一个索引,保存到磁盘中,保存到索引库中。 索引库中包含: 索引 Document对象 关键词和文档的对应关系 通过词语找文档,这种索引的结构就叫倒排索引结构 2,查询索引 1)用户查询接口 用户输入查询条件的地方 例如:百度的搜索框 2)把关键词封装成一个查询对象 要查询的域 要搜索的关键词 3)执行查询 根据要查询的关键词到对应的域中进行搜索 找到关键词,根据关键词来找到对应的文档 4)渲染结果 根据文档的id找到文档的对象 对关键词进行高亮显示 分页显示 最终展示出给用户展示 Lucene的学习 标签:构建 地方 开发 htm pdf 多个 结果 java开发 展示 原文地址:https://www.cnblogs.com/ketty/p/12104118.html