什麼是倒排索引

這是我參與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
    }
  ]
}
複製代碼

相關閱讀

相關文章
相關標籤/搜索