简体   繁体   English

使用“-”查询在 ElasticSearch NEST 7.x 中返回不正确的结果

[英]Query with '-' returns incorrect results in ElasticSearch NEST 7.x

Here is the query I use to search:这是我用来搜索的查询:

 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)))
                        )));

There are three documents with displayName = NPW-711, NPW-677 and NPW-777.共有三个文件,displayName = NPW-711、NPW-677 和 NPW-777。 When I search NPW-711 it returns all three documents.当我搜索 NPW-711 时,它会返回所有三个文档。 Can adding DefaultOperator(Elasticsearch.Net.DefaultOperator.And) help?添加DefaultOperator(Elasticsearch.Net.DefaultOperator.And)帮助吗? If yes, where it fits?如果是,它适合哪里?

Match query with AND operator will give you what you are looking for使用 AND 运算符匹配查询将为您提供所需的内容

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

output:输出:

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

Hope that helps.希望有帮助。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM