[英]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.