我们需要在以下字段上查询一组产品:SKU(产品参考),供应商参考和产品名称。当前,我们有一个bool应该查询,该查询应根据每个文档返回匹配项和相应的命名过滤器。
结果必须按以下顺序排序:确切的SKU,SKU前缀,确切的供应商参考,供应商参考前缀,产品名称。我们尝试使用boost,但是我们不能保证这种排序顺序。有时,供应商参考前缀和产品名称的匹配项得分会高于前缀。
有什么方法可以按照我们想要的方式对搜索结果进行排序(或重新评分)?
Elasticsearch v2.4
当前查询:
$payload = '{
"query": {
"bool": {
"should":
[
{
"term": {
"sku.untouched" : "' . $searchTerm . '",
"_name": "sku_exact"
}
},{
"prefix" : {
"sku.untouched" : "' . $searchTerm . '",
"_name": "sku_prefix"
}
},{
"term": {
"supplier_reference": "' . $searchTerm . '",
"_name": "supplier_reference_exact"
}
},{
"prefix" : {
"supplier_reference" : "' . $searchTerm . '",
"_name": "supplier_reference_prefix"
}
},{
"match" : {
"name" : {
"query" : "' . $searchTerm . '",
"operator": "and",
"_name": "name_match"
}
}
}
]
}
}
}';