在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" :{}
      }
    }
  }
}
它确实与名称为“apples&oranges”的文档匹配
即使在文件中定义了同义词,我也无法理解为什么“橙色”不匹配。我知道同义词已正确索引,因为同一文件中的其他同义词正在工作。
另外,想提一下,我正在将synonym_analyzer与lowercasestopkstem过滤器以及whitespace标记器一起使用。我可以想象苹果和橘子被源于'apple','&','orange'并且因此不匹配,但在这种情况下,短语'apples&'也不应该匹配?

最佳答案

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

orange => apples
它会正确返回名称为“apples&oranges”的预期文档
不知道为什么同义词中的apples & oranges无法正常工作。我尝试删除stopkstem过滤器,但行为仍然相同

关于elasticsearch - elasticsearch中的同义词不匹配带有复数的短语,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/64663127/

10-15 20:08