具有精确匹配加权的订单列表然后在弹性搜索中失去匹配

时间:2017-09-04 16:17:50

标签: elasticsearch

我正在研究如何对结果进行加权以选择完全匹配。例如,如果我有monkeymonkey business并且我搜索monkey,则应该在猴子业务之前使用 monkey 返回记录。然而,由于我不知道的原因,它首先返回猴子业务并获得更多分数。

我尝试了几次迭代,包括match_phrase,match,term(都在bool中)。

我的最新查询是(我已经整理了它,因为有很多注释代码,请原谅我,如果语法被破坏):

 "query": {
          "bool": {
            "must" : [ // All of these clauses must match. The equivalent of AND
              {
                "match": {
                  "supplier": {
                    "query": search ? search : "",
                    "minimum_should_match": "30%"
                  }
                }
              }
            ],
            "should": [ // At least one of these clauses must match. The equivalent of OR
              {
                "match_phrase": {
                   "supplier": {
                      "query": search ? search : "",
                      "slop":  50
                   }
                }
              },             
            ],
            'filter' : [ // Clauses that must match, but are run in non-scoring, filtering mode
            { "match": { "signup": 100 }},
            { "match": { "isApproved": true }}
            ]
          }
}

1 个答案:

答案 0 :(得分:0)

您希望检索所有匹配的文档,并为完全匹配的文档获得高分。因此,bool部分must - minimum_should_match部分中的“简单”匹配与should中的100%{ "query": { "bool":{ "must": [ { "match":{ "supplier": "monkey business" } } ], "should": [ { "match":{ "supplier": { "query": "monkey business", "minimum_should_match": "100%" } } } ] } } } 匹配 - 部分:

f a b