elasticsearch中的同义词与复数短语不匹配

rqcrx0a6  于 2021-06-10  发布在  ElasticSearch
关注(0)|答案(1)|浏览(344)

在elasticsearch上看到同义词的奇怪行为:
假设我的同义词文件包含以下内容:

orange => apples & oranges

当我搜索橙色时:

POST my_index/_search
{
  "suggest" : {
    "name_suggest" : {
      "text" : "orange",
      "completion" : {
        "field" : "name_suggest",
        "size" : 7,
        "fuzzy" :{}
      }
    }
  }
}

它与名为“apples&oranges”的文档不匹配
但是,如果我搜索“苹果&”

POST new_sector_index,org_index/_search
{
  "suggest" : {
    "name_suggest" : {
      "text" : "apples &",
      "completion" : {
        "field" : "name_suggest",
        "size" : 7,
        "fuzzy" :{}
      }
    }
  }
}

它和医生的名字“苹果和橙子”是一致的
即使我在文件中定义了同义词,我也无法理解为什么“orange”不匹配。我知道同义词索引正确,因为同一个文件中的其他同义词都在工作。
另外,我想提到的是,我使用的同义词是 lowercase , stop 以及 kstem 过滤器和 whitespace 标记器。我可以想象苹果和橙子的词干是“apple”、“&”、“orange”,因此不匹配,但在这种情况下,只是短语“apples&”也不应该匹配?

bjp0bcyl

bjp0bcyl1#

符号(&)的使用引起了这种奇怪的行为。
如果我在同义词文件中执行以下操作,

orange => apples

它正确返回名为“apples&oranges”的预期文档
不知道为什么 apples & oranges 但在同义词中却不起作用。我试着搬走了 stop 以及 kstem 但行为保持不变

相关问题