動態

詳情 返回 返回

試用 Elasticsearch 8 的同義詞 API(qbit) - 動態 詳情

前言

  • Elasticsearch 8.10 引入了同義詞 API,可以取代以前的同義詞文件
  • 注意 synonyms_set 只能用於 search_analyzer,不能用於 index analyzer

案例

  • 創建或更新同義詞集合
PUT _synonyms/test_syn_set
{
  "synonyms_set": [
    {
      "id": "pc",
      "synonyms": "pc => personal computer"
    },
    {
      "id": "computer",
      "synonyms": "computer,laptop"
    },
    {
      "id": "事兒",
      "synonyms": "事兒,事"
    }
  ]
}
  • 查詢同義詞集
GET _synonyms/test_syn_set
  • 創建測試索引 my_index
PUT my_index
{
  "settings": {
    "index": {
      "analysis": {
        "analyzer": {
          "synonym_analyzer": {
            "tokenizer": "ik_smart",
            "filter": [
              "test_syn"
            ]
          }
        },
        "filter": {
          "test_syn": {
            "type": "synonym_graph",
            "synonyms_set": "test_syn_set",
            "updateable": true
          }
        }
      }
    }
  },
  "mappings": {
    "properties": {
      "title": {
        "type": "text",
        "analyzer": "ik_smart"
      }
    }
  }
}
  • 測試分詞效果
GET my_index/_analyze
{
  "text": [
            "明朝那些事兒"
          ],
  "analyzer": "synonym_analyzer"
}
分詞結果: 明朝 那些 事兒 事
  • 更新單個同義詞
PUT _synonyms/test_syn_set/事兒
{
  "synonyms": "事兒,事,事情"
}
  • 注意無論是更新同義詞集合整體還是更新單個同義詞,ES 會自動 _reload_search_analyzers,無需手動操作
  • 似乎 ES 8 不再用同義詞隱式傳遞的問題
# 隱式傳遞即
A,B
B,C
# 通過 B,將 A C 視為同義詞

相關閲讀

  • Elasticsearch 官方博客:Update your synonyms in Elasticsearch: Introducing the synonyms API
  • 銘毅天下:Elasticsearch 8.10 同義詞管理新篇章:引入同義詞 API
本文出自 qbit snap
user avatar gqkmiss 頭像 baishayunying 頭像 tencent_blueking 頭像 ineo6 頭像
點贊 4 用戶, 點贊了這篇動態!
點贊

Add a new 評論

Some HTML is okay.