Eug*_*Yan 5 python elasticsearch
Elasticsearch允许通过其“更多类似”(MLT)查询来搜索相似文档。我试图更好地理解和调整查询以更好地找到相似的文档。
在进行实验时,我发现来自多个字段的单个MLT查询的结果与每个字段一个的多个MLT查询的布尔值产生不同的结果。以下示例(被截断):
具有多个字段的单个MLT查询
es.search(index=INDEX_NAME, body = {'query': {
"more_like_this" : {
"fields" : ['title', 'category_name', 'brand'],
"like" : []
}
}
})
Run Code Online (Sandbox Code Playgroud)
具有单个字段的多个MLT查询
es.search(index=INDEX_NAME, body = {'query': {
'bool': {
'should': [
{'more_like_this' : {
'fields' : ['title'],
'like' : [],
}},
{'more_like_this' : {
'fields' : ['category_name'],
'like' : [],
}},
{'more_like_this' : {
'fields' : ['brand'],
'like' : [],
}},
]
}
}
})
Run Code Online (Sandbox Code Playgroud)
为什么会这样?
我知道MLT查询将合并单个查询中列出的所有字段中的文本以搜索文档。但是,标题,类别名称和品牌字段中的文本没有重叠。因此,结果应相同。但是,结果却有所不同-多个MLT查询的效果更好。
如果这个问题没有直接的解决方法,我深表歉意。我希望弹性专家对如何改进返回的查询有更多的了解。
如果有时间,这是我在MLT上发布的上一个问题,但仍未得到解答:Elasticsearch特定于字段的“ more_like_this”查询
如果我理解正确的话,在两种不同的情况下,规范化过程发生在字段内和跨字段。分数根据字段字符串的长度、出现次数等进行标准化。如果各个字段的分数差异很大,那么您不会期望两个查询的结果相同。
| 归档时间: |
|
| 查看次数: |
1081 次 |
| 最近记录: |