Lucene全文检索技术

1.什么是全文检索技术
是一种搜索技术,一般对于结构化数据,有固定格式和长度的数据,我们使用sql进行查询,而对于非结构化的数据,数据格式不固定,长度也不固定的数据我们要怎么进行检索呢?
这时候我们就要使用全文检索技术,及先将我们的文件通过分词器进行分词,创建索引,然后通过索引去查找我们要找的对应的数据
2.为什么要使用全文检索技术
数据库的查询语句是select * from 表名 where 查询条件,单在数据量较大的请款改下使用select 进行权标扫描查询效率可以而知的慢.如果大量的文件没有索引,我们怎么去查找我们要的数据内容呢?我们可以使用顺序扫描法,可是这种方法是将文件从头到尾并且是一个文件一个文件的进行 扫描,这个效率可想而知很慢.因此我们需要全文检索技术,来达到快速检索
3.数据结构:
生活中的数据总体分为两种:
1.结构化数据:指具有固定格式和长度的数据
2.非结构化数据:指不定长或者没有固定格式的数据
非结构化数据有一种叫法是全文数据
因此根据数据的结构划分,数据的搜索也分为两种:
1.对结构化数据的搜索:例如对数据库的搜索,使用sql进行搜索,如利用window是索引对文件名,类型,修改时间进行搜索
2.对非结构化数据的搜索如利用windows的搜索也可以搜索文件内容Linux下的grep,再如用Google和百度百度可以搜索大量内容数据

对于非结构化数据也及对全文数据的搜索主要有两种方法
一种是顺序扫描法(serial Scanning ) ,一种是全文检索,即先建立索引,然后在通过索引进行搜索的过程称为全文检索.
4.全文检索分为两个过程:
第一步:创建索引:将结构化数据和非结构化的数据提取信息,创建索引的过程
第二步:搜索索引:就是得到用户的查询请求,搜索创建的索引,然后返回结果的过程
5.如果创建索引:
我们将文件使用ik分词器进行分词(将词元传给索引组件,索引组件根据得到的词创建字典,然后进行排序,将词合并,计算出该词出现的频率,)
6.如何搜索:
根据用户输入的查询语句,然后使用分词器对查询的语句进行分词,根据分词搜索所以,获取符合语法的文档,然后根据得到的文档和查询语句的想关性,对结果进行排序.(影响一个词在一篇文章中的重要性,要看其在该文章中出现的次数tf,出现的次数越多说明其越重要,其分数也就越高,再看有多少文章包含了该次即df,越多的文章包含,说明其越不重要,分数越低,然后根据一定的算法对我们的搜索结果进行打分,分数高的排在前面).

7索引的过程:
1.有一系列的被索引文件
2.被索引文件经过语法分析和语言处理形成一系列的词,
3.经过索引创建形成词典和反洗爱过你索引表
4.通过索引存储将索引写入硬盘
搜索的过程:
1.用户输入查询语句
2.对查询语句进行分词,
3.通过语法分析得到查询书
4.通过索引存储将索引读到内存中
5.利用查询书搜索索引,从而得到每个词的文档链表,对文档链表进行交叉,得到结果文档
6.将得到的文档对查询的想关性进行排序
7.返回查询结果给用户

图片.png

推荐阅读更多精彩内容