在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与
lowercase
,stop
和kstem
过滤器以及whitespace
标记器一起使用。我可以想象苹果和橘子被源于'apple','&','orange'并且因此不匹配,但在这种情况下,短语'apples&'也不应该匹配? 最佳答案
与符号(&)的使用引起了奇怪的行为。
如果我只是在同义词文件中执行以下操作,
orange => apples
它会正确返回名称为“apples&oranges”的预期文档不知道为什么同义词中的
apples & oranges
无法正常工作。我尝试删除stop
和kstem
过滤器,但行为仍然相同关于elasticsearch - elasticsearch中的同义词不匹配带有复数的短语,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/64663127/