Эластичный поиск Nest клиент не применяет надстройку - PullRequest
1 голос
/ 11 ноября 2019

Я исследую ошибку с результатами поиска, которые не соответствуют ожидаемым, и обнаружил, что это происходит из-за того, что повышение не применяется.

Запрос генерируется с использованием 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))
};

Но сгенерированный запрос не применяет никакого повышения. это работает?

1 Ответ

1 голос
/ 12 ноября 2019

Действительно похоже, что boost где-то игнорируется, здесь - ссылка на проблему с 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))
};

, который генерирует следующий запрос кasticsearch

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

Протестировано с NEST 6.6.0.

Надеюсь, что это поможет.

...