当前位置 : 主页 > 网络推广 > seo >

信息检索技术----Lucene(一)

来源:互联网 收集:自由互联 发布时间:2021-06-16
1 信息检索概述 1.1 传统检索方式的缺点 ? 文件检索 操作系统常见的是硬盘文件检索 文档检索:整个文档打开时已经加载到内存了; 缺点:全盘遍历,慢,内存的海量数据 ? 数据库检索 like

1 信息检索概述

 1.1 传统检索方式的缺点
    ? 文件检索
        操作系统常见的是硬盘文件检索
        文档检索:整个文档打开时已经加载到内存了;
        缺点:全盘遍历,慢,内存的海量数据
    ? 数据库检索
        like "%三星%" 全表遍历;
        like "三星%" 最左特性 不会全表遍历;
        
        无法满足海量数据下准确迅速的定位
        mysql 单表数据量---千万级
        oracle 单表数据量---亿级
  

  总结:传统的方式无法满足检索的需求(迅速,准确,海量)

2 全文检索技术(大型互联网公司的搜索功能都是全文检索)

   2.1 定义:

  在海量的信息中,通过固定的数据结构引入索引文件,利用对索引文件的处理实现对应数据的快速定位等功能的技术;
    
       信息检索系统(全文检索技术的应用,搜索引擎百度,google)
       信息采集:通过爬虫技术,将公网的海量非结构化数据爬去到本地的分布式存储系统进行存储
       信息整理:非结构化数据无法直接提供使用,需要整理,整理成索引文件
     信息查询:通过建立一个搜索的应用,提供用户的入口进行查询操作,利用查询条件搜索索引文件中的有效数据;

  2.2结构

问题:非结构化数据,海量数据如何整理成有结构的索引文件(索引文件到底什么结构)?

 2.3倒排索引
      索引文件,是全文检索技术的核心内容,创建索引,搜索索引也是核心,搜索在创建之后的;
      如何将海量数据计算输出成有结构的索引文件,需要严格规范的计算逻辑-----倒排索引的计算
    
      以网页为例:
      假设爬虫系统爬去公网海量网页(2条);利用倒排索引的计算逻辑,将这2个非结构化的网页信息数据整理成索引文件;
    
      源数据: 标题,时间,作者,留言,内容
      网页1(id=1): 王思聪的IG战队获得LOL世界冠军,结束长达8年的遗憾
      网页2(id=2): 王思聪又换女朋友了吗?嗯,天天换.
    
      倒排索引的第一步:计算分词(数据内容)
          分词:将数据字符串进行切分,形成最小意义的词语  (不同语言底层实现是不一样的)
          并且每个分词计算的词语都会携带计算过程中的一些参数
          词语(来源的网页id,当前网页中该词语出现的频率,出现的位置)
    
      网页1: 王思聪(1,1,1),IG(1,1,2),战队(1,1,3), LOL(1,1,4) 世界(1,1,5)
      网页2: 王思聪(2,1,1),女朋友(2,1,1),天天(2,1,1);
    
      倒排索引第二步:合并分词结果
        合并结果:王思聪([1,2],[1,1],[1,1]),IG(1,1,2),战队(1,1,3), LOL(1,1,4) 世界(1,1,5),女朋友(2,1,1),天天(2,1,1);
        合并逻辑:所有的网页的分词计算结果一定有重复的分词词汇,合并后所有参数也一起合并,结果形成了一批索引结构的数据;
      倒排索引第三步:源数据整理document对象

      document是索引文件中的文档对象,最小的数据单位(数据库中的一行数据)每个document对应一个网页

   倒排索引第四步:形成索引文件
        将网页的数据对象(document)和分词合并结果(index)一起存储到存储位置,形成整体的索引文件

  索引文件结构:

  

  对索引文件中的分词合并后的数据进行复杂的计算处理,获取我们想要的数据集合(document的集合)

网友评论