elasticsearch - elasticsearch中的同义词与复数短语不匹配
问题描述
在 Elasticsearch 上看到同义词的奇怪行为:
假设我的同义词文件具有以下内容:
orange => apples & oranges
当我搜索橙色时:
POST my_index/_search
{
"suggest" : {
"name_suggest" : {
"text" : "orange",
"completion" : {
"field" : "name_suggest",
"size" : 7,
"fuzzy" :{}
}
}
}
}
它与名称为“apples & oranges”的文档不匹配
但是,如果我搜索“apples &”
POST new_sector_index,org_index/_search
{
"suggest" : {
"name_suggest" : {
"text" : "apples &",
"completion" : {
"field" : "name_suggest",
"size" : 7,
"fuzzy" :{}
}
}
}
}
它确实与名称为“apples & oranges”的文档匹配
即使我在文件中定义了同义词,我也无法理解为什么“橙色”不匹配。我知道同义词的索引正确,因为同一文件中的其他同义词正在工作。
另外,想提一下我正在使用带有lowercase
,stop
和kstem
过滤器和标记器的 synonym_analyzer whitespace
。我可以想象 apples & oranges 被称为 'apple', '&' , 'orange' 因此不匹配,但在这种情况下,只是短语 'apples &' 也不应该匹配?
解决方案
与号 (&) 的使用导致了奇怪的行为。
如果我只是在同义词文件中执行以下操作,
orange => apples
它正确返回名称为“apples & oranges”的预期文档
不知道为什么apples & oranges
在同义词中不起作用。我尝试删除stop
和kstem
过滤,但行为保持不变
推荐阅读
- python - Pandas 数据框:检查数据是否单调递减多长时间?
- python - LinearSVC 中参数 class_weight 的最佳值是多少?
- javascript - 使用 Vue.js 将数组长度增加和减少到输入范围值
- itunes - 如何从 Catalina 中的 iTunesLibrary 升级
- firebase - 如何在firestore的查询中使用循环?
- python - 为什么即使在使用 return 时我的代码最后也没有
- android-studio - 如何在android studio中查看widget的联动进行flutter编程
- sql-server - 用于复制一个数字并将其插入到每 5 行的 SQL 脚本
- pandas - 按 Inspector_ID 分组总和,以及熊猫中的 Day
- flutter - 如何在 Flutter 中将按钮附加到底部?