如何在 Elasticsearch 中链接同义词

问题描述

在我的应用程序中,我想创建以下层次结构:

hobby -> sport -> football

在查找 hobby 一词时,我还想检查运动和足球这个词,在查找运动这个词时,我也想检查足球这个词但不是爱好这个词,在查找足球这个词时,我只想检查这个词,而不是其他的。

这是我目前尝试的样子:

"synonyms": [
  "sport => hobby","football => sport"
]

此处描述了 Elasticsearch-Synonyms 的工作原理:https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-synonym-tokenfilter.html

但真正重要的是,左侧的所有术语都将替换为右侧的所有术语。当我寻找“爱好”这个词时,我确实也得到了运动的结果,而当我寻找运动时,我也得到了足球的结果,但问题是同义词没有连锁。这意味着,如果我寻找爱好,我也想要足球的结果,但我不想要。

当然,最简单的方法就是输入以下内容

"synonyms": [
  "sport,football => hobby","football => sport"
]

但这将是 A) 多余的和 B) 一个糟糕的解决方案,因为最终的层次结构将比这个示例大得多,并且将所有潜在的替代方案放在爱好面前似乎非常混乱,不像预期的解决方法这个。

我也试过:

"synonyms": [
  "sport => sport,hobby","football => football,sport"
]

但这也没有用。

期待你的回答! :)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)