美文网首页Hadoop
01.lucene 全文检索介绍

01.lucene 全文检索介绍

作者: 哈哈大圣 | 来源:发表于2019-02-28 23:25 被阅读28次

    lucene 全文检索介绍

    一、数据的分类

    1). 结构化数据

    1. 格式固定、长度固定、数据类型固定。
    2. 例如 数据库中的数据

    2). 非结构化数据

    1. 格式不固定、长度不固定、数据类型不固定等等
    2. 例如word文档、pdf文档、邮件、html、txt、xml等

    二、数据的查询

    1). 结构化数据的查询

    1. SQL语句,查询结构化数据的方法:简单、快速

    2). 非结构化数据的查询

    1. 顺序扫描:将数据加载到内存,匹配字符串等等
    2. 全文检索】: 将非结构化数据变成结构化数据
      • 索引:为了提高查询速度创建的某个数据结构的集合,通常喜欢使用 B Tree 。

    先根据空格进行字符串拆分,得到一个单词列表,基于单词列表创建一个索引。然后查询索引,根据单词和文档的对应关系找打文档列表。

    三、全文检索

    先创建索引然后根据查询索引的过程叫做全文检索;索引一次创建可以多次使用。表现为每次查询速度很快。

    1). 全文检索应用场景

    1. 搜索引擎
      • 百度、谷歌
    2. 站内搜索
      • 论坛搜索、微博、文章搜索
    3. 电商搜索
      • 淘宝搜索、京东搜索
    4. 只要有搜索的地方就可以使用全文检索技术

    四、Lucene全文检索的流程

    Lucene是一个基于Java开发的全文检索工具包,Java领域的搜索引擎王者,其他很多的工具包的底层都是封装的Lucene


    lucene索引和搜索流程图.png

    1). 创建索引

    1]. 获得文档

    1. 原始文档:要基于那些数据来进行搜索,这些数据就是原始文档
      • 搜索引擎的原始文档:比如 百度 谷歌,使用 爬虫技术 爬取的原始文档
      • 站内搜索:数据库中的数据
      • 个人pc:直接使用io流读取磁盘上的我呢间

    2]. 创建文档对象

    1. 每个原始文档都会有一个 Document 对象
    2. 每个Document独享中包含多个域(Field)
      • 每个文档都有一个唯一的编号。
    3. 域中保存就是原始文档数据,包含:
      • 域的名称
      • 域中的值

    lucene文档Document中的域Fiele.png

    3]. 分析文档:分词的过程 (以英文内容为列)

    1. 根据空格进行字符串拆分,得到一个单词列表
    2. 将单词统一转换成小写
    3. 去除标点符号
    4. 去除停用词:没有实际意义的一些词 比如 a/an/the
    5. 每个关键词都封装到一个独立的Term对象中
      • Term类对象中包含两部分内容
        1. 关键词所在的域
        2. 关键词本身
      • 不同域中拆分出来的相同的关键词是不同的Term

    4]. 创建索引

    基于关键词列表创建一个索引。保存到索引库中。

    1. 索引库中中保存的东西
      1. 索引:一般为排序的B Tree结构,
      2. document对象
      3. 关键词和文档的对应关系:与关键词相关的文档的id以链表的形式串联起来。

    通过词语找文档,这些与词语对应的文档的id以链表的形式串联起来;这种索引结构为 倒排索引结构


    lucene索引库.png
    倒排索引结构.jpg

    2). 查询索引

    1]. 用户查询接口

    1. 用户数据查询条件的地方:例如淘宝的搜索框

    2]. 将关键字封装成一个查询对象

    1. 指明需要查询的域
    2. 要搜索的关键词

    3]. 执行查询

    1. 根据要查询的关键词到对应的域上进行搜索
    2. 找到关键词,根据关键词找到对应的文档

    4]. 渲染结果

    1. 根据文档的id找到文档对象
    2. 对关键词进行高亮显示
    3. 分页处理
    4. 最终渲染给用户!

    相关文章

      网友评论

        本文标题:01.lucene 全文检索介绍

        本文链接:https://www.haomeiwen.com/subject/pcgluqtx.html