Запрос с '-' возвращает неверные результаты в ElasticSearch NEST 7.x - PullRequest
0 голосов
/ 30 января 2020

Вот запрос, который я использую для поиска:

 var response = await client.SearchAsync<MenuForElasticSearch>(searchDescriptor => searchDescriptor
                .Query(queryContainerDescriptor => queryContainerDescriptor
                    .Bool(queryDescriptor => queryDescriptor
                        .Should(queryStringQuery => queryStringQuery.Match(match => match.Field(fld => fld.DisplayName).Query(query)),
                        queryStringQuery => queryStringQuery.Wildcard(wildcard => wildcard.Field(flds => flds.DisplayName).Value($"*{query}*")),
                        queryStringQuery => queryStringQuery.Fuzzy(fuzzy => fuzzy.Field(flds => flds.DisplayName).Value(query)))
                        )));

Существует три документа с displayName = NPW-711, NPW-677 и NPW-777. Когда я ищу NPW-711, он возвращает все три документа. Может ли добавление DefaultOperator(Elasticsearch.Net.DefaultOperator.And) помочь? Если да, то где он подходит?

1 Ответ

2 голосов
/ 30 января 2020

Совпадение запроса с оператором AND даст вам то, что вы ищете

var results = await client.SearchAsync<Document>(s => s
    .Query(q => q
        .Match(m => m
            .Field("name")
            .Query(query)
            .Operator(Operator.And))));

вывод:

Results for query "NPW-777": NPW-777
Results for query "NPW": NPW-711,NPW-677,NPW-777
Results for query "677": NPW-677

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

...