zoukankan      html  css  js  c++  java
  • Elasticsearch倒排索引

    什么是倒排索引?

    假设有这么几条数据

    ID Name Age Sex
    1 Kate 24 Female
    2 John 24 Male
    3 Bill 29 Male

    ID是Elasticsearch自建的文档id,那么Elasticsearch建立的索引如下:

    Name:

    Term Posting List
    Kate 1
    John 2
    Bill 3

    Age:

    Term Posting List
    24 [1,2]
    29 3

    Sex:

    Term Posting List
    Female 1
    Male [2,3]

    有必要解释一下几个名词

    Term(单词):一段文本经过分析器分析以后就会输出一串单词,这一个一个的就叫做Term(直译为:单词)

    Term Dictionary(单词字典):顾名思义,它里面维护的是Term,可以理解为Term的集合

    Term Index(单词索引):为了更快的找到某个单词,我们为单词建立索引

    Posting List(倒排列表):倒排列表记录了出现过某个单词的所有文档的文档列表及单词在该文档中出现的位置信息,每条记录称为一个倒排项(Posting)。根据倒排列表,即可获知哪些文档包含某个单词。
    (PS:实际的倒排列表中并不只是存了文档ID这么简单,还有一些其它的信息,比如:词频(Term出现的次数)、偏移量(offset)等,可以想象成是Python中的元组,或者Java中的对象)
    (PS:如果类比现代汉语词典的话,那么Term就相当于词语,Term Dictionary相当于汉语词典本身,Term Index相当于词典的目录索引)

    为了更进一步理解,下面从网上摘了两张图来具现化这一过程:

    在这里插入图片描述在这里插入图片描述

  • 相关阅读:
    100个精彩的开源游戏
    poj 2104 K-th Number
    Redis源代码分析-内存数据结构intset
    android音乐播放器开发 SweetMusicPlayer 实现思路
    MySQL 二进制日志(Binary Log)
    Node.js 博客实例(六)留言功能
    HBase总结(十二)Java API 与HBase交互实例
    window+Apache 配置虚拟主机(2)
    Web Service那点事
    JSP基本语法
  • 原文地址:https://www.cnblogs.com/paper-man/p/13284640.html
Copyright © 2011-2022 走看看