美文网首页
ElasticSearch - 倒排索引

ElasticSearch - 倒排索引

作者: 辻子路 | 来源:发表于2019-08-21 09:27 被阅读0次

    Elasticsearch使用一种叫做倒排索引(inverted index)的结构来做快速的全文搜索。倒排索引由在文档中出现的唯一的单词列表,以及对于每个单词在文档中的位置组成。
    我们把正排索引看作是书的目录,那倒排索引就是类似词典中单词的索引页,告诉你它在第几页:

    • 书籍
      1. 正排索引 - 目录页
      2. 倒排索引 - 索引页
    • 搜索引擎
      1. 正排索引 - 文档id到文档内容和单词的关联
      2. 倒排索引 - 单词到文档id的关系

    正排索引:

    文档Id 文档内容
    1 blue yellow
    2 yellow green
    3 yellow red

    倒排索引:

    Term Count DocumentId:Postition
    yellow 3 1:1,2:0,3:0
    blue 1 1:0
    green 1 2:1
    red 1 3:1

    倒排索引的组成

    • 单词词典
      记录所有文档的单词,记录到此到倒排列表的关联关系
      ps: 单词词典一般很大,通过b+或者哈希拉链法实现,满足其高性能的插入与查询
    • 倒排列表
      记录了单词对应的文档结合,由倒排索引项组成:
      1. 文档id
      2. 词频 - 该词在文档中出现的次数,用于相关性评分
      3. 位置 - 文档中分词的位置。 用于语句搜索
      4. 偏移 - 记录单词的开始结束位置,实现高亮显示

    Demo:Elasticsearch

    文档Id 文档内容
    1 Mastering Elasticsearch
    2 Elasticsearch Server
    3 Elasticsearch Essentials
    Doc Id TF Position Offset
    1 1 1 <10,23>
    2 1 0 <0,13>
    3 1 0 <0,13>

    ES的倒排索引

    • ES的json文档中的每个字段,都有自己的倒排索引

    • 可以指定对某些字段不做索引

      优点: 节省存储空间  
      缺点: 字段无法被搜索

    相关文章

      网友评论

          本文标题:ElasticSearch - 倒排索引

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