在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&”也不应该匹配?
1条答案
按热度按时间bjp0bcyl1#
符号(&)的使用引起了这种奇怪的行为。
如果我在同义词文件中执行以下操作,
它正确返回名为“apples&oranges”的预期文档
不知道为什么
apples & oranges
但在同义词中却不起作用。我试着搬走了stop
以及kstem
但行为保持不变