• ElasticSearch(7)---倒排索引


    在这里插入图片描述

    上一篇:ElasticSearch(6)—Kibana插件

    1.正向索引和反向索引

      涉及到索引的概念的时候,首先需要知道,索引可以分为正向索引和反向索引(也可以理解为倒排索引)。

    正向索引:

      正向索引可以简单理解为从文档到单词。例如现在有4个文档,

    Doc Words
    Doc1 On the road of life
    Doc2 never retreat from the whole body
    Doc3 enjoy its achievements and get something for nothing
    Doc4 If you don’t work hard, you’re out

      建立正向索引就会先解析每个文档中出现的单词,然后建立从文档到单词的映射关系。

    Doc Words
    Doc1 On,the, road, of, life
    Doc2 never ,retreat, from, the, whole, body
    Doc3 enjoy ,its, achievements, and, get, something, for, nothing
    Doc4 If ,you, do ,not, work hard, you are out
    反向索引:

      反向索引可以简单理解为从单词到文档。还是以上面4个文档为例,建立反向索引 就会建立单词到文档的映射关系

    Word Doc
    On Doc1,
    the Doc1,Doc2,
    road Doc1
    …… ……

    反向索引不仅能够记录某个单词在文档中出现的位置,还可以记录在文档中出现的次数。比如上表中的OnDoc1中出现1次,单词youDoc4中出现了2次。

    2.ElasticSearch为什么不用正向索引?

      如果使用正向索引,用户在输入搜索关键词的时候,会遍历所有的文档,找出包含该关键词的文档。再向用户进行数据响应。但是ElasticSearch往往是用来处理一些拥有海量数据的应用需求(如百度搜索等),使用正向索引效率太低,无法实时响应数据。所以此时使用反向索引(倒排索引)更加合理。

    3.倒排索引案例

      现在有下面这样一个栗子,我们需要对下面图中所示的文档建立倒排索引。(图片来源于网络)

    在这里插入图片描述
    使用分词器将文档中的内容进行单词切分。并记录出现这些单词的文档编号。
    在这里插入图片描述
    如果现在某用户想要搜索谷歌,那么就可以直接找到出现谷歌单词的文档有:1,2,3,4,5。倒排索引不仅能够记录关键词的位置信息,还可以记录关键词出现的频率。比如下图中的Wave在文档4中出现了1次,拉斯在文档3中出现了1次,在文档5中出现了1次。

    在这里插入图片描述
    在进行搜索结果展示的时候,会根据索引的匹配度来进行打分,分数越高,排名越高。
    如现在搜索谷歌加盟网站

    单词 文档1 文档2 文档3 文档4 文档5
    谷歌 * * * * *
    加盟 * * *
    网站 *

    按照上图表中的星号分布所示,文档5打分最高,匹配度最高。

    下一篇:ElasticSearch(8)—分词器
  • 相关阅读:
    Codeforces 514C Watto and Mechanism(字典树)
    计蒜客 直线的交点(计算几何 + 逆序对)
    Codeforces 837D Round Subset(背包)
    计蒜客 商汤科技的行人检测(随机化+计算几何)
    HDU 5893 List wants to travel(树链剖分+线段树)
    操作系统的中断处理
    Linux 安装 webmin
    Fedora 安装 phpMyAdmin(可能只有自己看得懂)
    httpd编译安装php
    IA-32e架构下的内核初始化内存管理
  • 原文地址:https://www.cnblogs.com/wgty/p/12810407.html
Copyright © 2020-2023  润新知