首页 > 解决方案 > Elasticsearch 同义词 - 如何确定优先级?

问题描述

假设我有一个同义词文件,其中只有下面的两个同义词行

ft , synonym_1
10 ft , synonym_2

当我在分析仪中使用这个文件并分析“10 ft”这个词时,我得到以下信息:

{
  "tokens": [
    {
      "token": "10"
    },
    {
      "token": "ft"
    },
    {
      "token": "synonym_2",
    }
  ]
}

synonym_1 没有出现,即使“ft”在分析的文本中匹配了一个标记。这是因为单个标记和短语的某些优先级吗?“10 ft”是否匹配更多的分析文本,因此它是唯一生效的同义词?有没有办法让第一个同义词在这种情况下起作用?

注意:我正在使用空格标记器并分析文本“30 ft”给了我 synonym_1。只有当“10 ft”恰好出现时,第一个同义词才被打破。

"simplified_analyzer": {
  "filter": [
      "lowercase",
      "stemmer",
      "synonyms",
      "edge_ngrams",
      "remove_duplicates"
  ],
  "char_filter" => ["remove_html", "remove_non_alphanumeric"],
  "tokenizer" => "whitespace"
}

我是否必须使用第二个同义词过滤器来处理单个单词?

标签: elasticsearchsolrsynonym

解决方案


推荐阅读