当前位置:首页 > Web开发 > 正文

Lucene的学习

2024-03-31 Web开发

一,什么是全文检索

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找到文档的东西

        对关键词进行高亮显示

        分页显示

        最终展示出给用户展示

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/32981.html