我有一个场景,我需要列出一堆弹性搜索的工作。搜索将主要通过关键字eg进行。(电气工程、司机等)我想要创建一个反馈系统,其中相应的关键字给予更高的权重,如果用户点击一个特定的工作。
到目前为止,这一切都是可行的。我面临问题,因为在我的系统中,用户可以搜索多个关键字,例如。(司机或电气工程)。为此构建的查询如下所示
{
"query" : {
"bool": {
"should": [
{
"multi_match": {
"query" : "electrical engineering",
"fields" : [
"description^1.0",
"name^1.0"
]
}
},
{
"multi_match": {
"query" : "driver",
"fields" : [
"description^1.0",
"name^1.0"
]
}
}
]
}
},
"sort" : [
{
"_score" : {
"order" : "desc"
}
}
]
}在这个场景中,是否有一种方法,我可以将一个结果与一个特定的多匹配子句关联起来,这样我就可以确定这个结果在这里是因为word 驱动程序,而这是因为电气工程。
如果任何人有更好的想法,我可以完成我的反馈循环,请自由分享它。
谢谢
发布于 2017-03-02 05:32:26
我在elasticsearch论坛上找到了我的问题的答案,在这里发布同样的信息来帮助其他人。
弹性搜索提供了命名查询的概念,这些查询可用于为应用的每个查询指定名称,作为结果的一部分,ES将列出所有匹配的查询。就像。上面的查询可以这样写
{
"query" : {
"bool": {
"should": [
{
"multi_match": {
"query" : "electrical engineering",
"fields" : [
"description^1.0",
"name^1.0"
],
"_name" : "firstQuery"
}
},
{
"multi_match": {
"query" : "driver",
"fields" : [
"description^1.0",
"name^1.0"
],
"_name" : "secondQuery"
}
}
]
}
},
"sort" : [
{
"_score" : {
"order" : "desc"
}
}
]
}这将返回匹配的查询的结果。
https://stackoverflow.com/questions/42523455
复制相似问题