Elasticsearch 复合术语的同义词扩展

问题描述 投票:0回答:1

我有一个包含同义词过滤器的直播索引 我想扩大搜索范围。

如果我的同义词如下所示,

  • league of legend = lol
  • league of legends champions korea = lck

我想要分析

lol champions korea
lol(word)
league of legend(synonym)
champions(word)
korea(word)
lck(synonym)

我已经尝试过:

将它们添加到同义词词典中。

  • league of legend
    =
    lol
  • league of legends champions korea
    =
    lck

然后我用同义词过滤器选项制作了一个示例索引

expand=true

但是好像和我想象的不符。

GET sample/_analyze
{
  "analyzer": "synonym_analyzer",
  "text": "lol champions korea"
}
  • lol champions korea
    ->
    lol
    league of legend
    champions
    korea
    (应包括
    lck
  • lck
    ->
    league of legend
    champions
    korea
    (应包含
    lol

我的问题是:

  • 有什么办法可以扩展复合搜索词吗?

提前致谢。

elasticsearch elasticsearch-dsl
1个回答
0
投票

expand: true 选项本身并不能完全解决您的问题。您可以使用同义词图过滤器代替同义词过滤器。 它以更好更有效的方式处理此类复杂性。

{  "settings": {
"analysis": {
  "filter": {
    "synonym_graph_filter": {
      "type": "synonym_graph",
      "synonyms": [
        "league of legend => lol",
        "league of legends champions korea => lck"
      ],
      "expand": true
    }
  },
  "analyzer": {
    "synonym_analyzer": {
      "tokenizer": "standard",
      "filter": [
        "lowercase",
        "synonym_graph_filter"
      ]
    }
  }
}  }}
© www.soinside.com 2019 - 2024. All rights reserved.