根据匹配的查询对结果重新排序或更改分数

时间:2018-07-16 15:03:37

标签: elasticsearch

我们需要在以下字段上查询一组产品: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"
          }
        }
      }
    ]
   }
  }
}';

0 个答案:

没有答案