什么是倒排索引

这是我参与8月更文挑战的第7天,活动详情查看:8月更文挑战html

若是❤️个人文章有帮助,欢迎点赞、关注。这是对我继续技术创做最大的鼓励。更多往期文章在个人我的专栏git

什么是倒排索引

以一本书比做搜索引擎, 图书当中的目录页,页码到页码内容的单词关联 —— 就是正排索引 图书最后的关键字、内容索引页,页码内容 到 页码关联 —— 就是倒排索引github

正排索引 与 倒排索引结构 的 转化微信

微信图片_20210807145554.jpg

倒排索引的核心组成

  • 倒排索引包含两个部分markdown

    • 单词词典 (Term Dictionary),记录全部文档的单词,记录单词到倒排列表的关联关系
      • 单词词典通常比较大,能够经过B +树或哈希拉链法实现,以知足高性能的插入与査询
    • 倒排列表 (Posting List)-记录了单词对应的文档结合,由倒排索引项组成
      • 倒排索引项(Posting)
        • 文档ID
          • 词频TF-该单词在文档中出现的次数,用于相关性评分(score)
          • 位置(Position)-单词在文档中分词的位置。用于语句搜索(phrase query)
          • 偏移(Offset)-记录单词的开始结束位置,实现高亮显示
  • Elasticsearch 的 JSON 文档中每一个字段都有本身的倒排索引app

  • 能够指定对某些字段不作索引elasticsearch

    • 优势:节省存储空间
    • 缺点:字段没法别搜索

倒排索引演示

POST _analyze
{
  "analyzer": "standard",
  "text": "Mastering Elasticsearch"
}

# 输出:
{
  "tokens" : [
    {
      "token" : "mastering",
      "start_offset" : 0,
      "end_offset" : 9,
      "type" : "<ALPHANUM>",
      "position" : 0
    },
    {
      "token" : "elasticsearch",
      "start_offset" : 10,
      "end_offset" : 23,
      "type" : "<ALPHANUM>",
      "position" : 1
    }
  ]
}


====================================================

POST _analyze
{
  "analyzer": "standard",
  "text": "Elasticsearch Essentials"
}


# 输出:
{
  "tokens" : [
    {
      "token" : "elasticsearch",
      "start_offset" : 0,
      "end_offset" : 13,
      "type" : "<ALPHANUM>",
      "position" : 0
    },
    {
      "token" : "essentials",
      "start_offset" : 14,
      "end_offset" : 24,
      "type" : "<ALPHANUM>",
      "position" : 1
    }
  ]
}
复制代码

相关阅读

相关文章
相关标签/搜索