弹性搜索 Nest 客户端未应用提升

Elastic search Nest client not applying boost

我正在调查搜索结果与预期不符的错误,发现这是因为未应用提升。

查询是使用 NEST (6.6.0) 使用以下代码生成的:

queryContainer = new MultiMatchQuery
{
    Fuzziness = Fuzziness.Auto,
    Query = querystring,
    Type = TextQueryType.BestFields,
    Fields = Infer.Fields<RecipeSearchModel>(
        f1 => Infer.Field<RecipeSearchModel>(f => f.Title, 5),
        f2 => f2.Description,
        f3 => Infer.Field<RecipeSearchModel>(f => f.Ingredients, 3),
        f4 => f4.Method,
        f5 => Infer.Field<RecipeSearchModel>(f => f.Image.Alt, 4))
};

但是生成的查询没有应用任何提升。:

      "multi_match": {
        "fields": [
          "title",
          "description",
          "ingredients",
          "method",
          "image.alt"
        ],
        "fuzziness": "AUTO",
        "query": "chocolate",
        "type": "best_fields"
      }

documentation 可以看出这似乎是正确的,为什么它不起作用?

确实好像某处忽略了 boost,here 是 link 到 github 的问题。 现在,您可以尝试另一种语法:

queryContainer = new MultiMatchQuery
{
    Fuzziness = Fuzziness.Auto,
    Query = "query",
    Type = TextQueryType.BestFields,
    Fields = Infer.Fields<RecipeSearchModel>()
        .And(Infer.Field<RecipeSearchModel>(f => f.Title, 5))
        .And<RecipeSearchModel>(f => f.Description)
        .And(Infer.Field<RecipeSearchModel>(f => f.Ingredients, 3))
        .And<RecipeSearchModel>(f => f.Method)
        .And(Infer.Field<RecipeSearchModel>(f => f.Image.Alt, 4))
};

它生成以下对 elasticsearch 的查询

{
  "query": {
    "multi_match": {
      "fields": [
        "title^5",
        "description",
        "ingredients^3",
        "method",
        "image.alt^4"
      ],
      "fuzziness": "AUTO",
      "query": "query",
      "type": "best_fields"
    }
  }
}

使用 NEST 6.6.0 测试。

希望对您有所帮助。