ElasticSearch--全文检索

ElasticSearch

全文检索

数据结构
  • 结构化数据:固定格式,固定长度,如关系型数据库的设计的库表

  • 半结构化数据:有固定格式,但是不定长 如xml/html

  • 非结构化数据:不定长,无固定格式,比如邮件、word文档、日志等

搜索分类
  • 结构化数据搜索:使用关系型数据库

  • 非结构化数据搜索

    • 顺序扫描

      • 举例:查询某个字段包含“M”行的id

        select id from xxx where name like '%M%'
        
    • 全文检索

      • 通过一个程序扫描文本中的每一个单词,针对单词建立索引,并保存该单词的在文本中的位置以及出现的次数

      • 用户查询时,通过建立好的索引查询,将单词对应的文本位置和出现次数返回给用户,因为有具体的文本位置,就可以提取内容

        应用场景:csdn博客查询
  • es搜索原理

    • 内容爬取:停顿词、语气词和连接词过滤

    • 内容分词:提取关键字

    • 根据关键词建立倒排索引

    • 用户输入关键词进行搜索

正排倒排索引
正排索引
正排索引:一个未经处理的数据库中,一般是以文档ID作为索引,以文档内容作为记录。

举例:如图1,是按照顺序读取每一条数据,如关系型数据库的中的 like ‘%****%’

倒排索引

倒排索引:Inverted index,指的是将单词或记录作为索引,将文档ID作为记录,这样便可以方便地通过单词或记录查找到其所在的文档。

举例:如图2,将文档中的关键字做一个索引,记录文档的id,查询时根据索引返回结果。

倒排工作原理:事先将爬虫拿到的网页数据根据关键词分组;将用户请求的关键词对应的分组返回给用户。

倒排的hash冲突
hash冲突:在向Hash表中存数据时,首先要用Hash函数计算出该数据要存放的地址。但是在这个地址中已经有值存在,所以这个时候就发生了Hash冲突。也就是一句话:key值不同的元素可能会映象到哈希表的同一地址上。

倒排的hash冲突的原因:md5 (content) 做 key,有可能产生相同的key,如md5 (content1) = md5 (content2)

解决办法:根据拿到的文档编号做正排索引,如图

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值