首页 > 解决方案 > 带有“-”的查询在 ElasticSearch NEST 7.x 中返回不正确的结果

问题描述

这是我用来搜索的查询:

 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)帮助吗?如果是,它适合哪里?

标签: elasticsearchnest

解决方案


使用 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

希望有帮助。


推荐阅读