C#弹性搜索精确文本匹配与嵌套

我正在使用最新的 c# 弹性搜索 NEST 库。我正在尝试使用精确的文本匹配进行搜索,但目前它正在搜索子集匹配。我想做完全匹配。以下是我的代码片段:


public User GetUserByUsername(string username)

    {

        var client = new ElasticConnectionManager(this.configuration).GetClient(Constant.IndexUsers);


        var searchResponse = client.Search<User>(s => s                

            .Query(q => q

            .Bool(bq => bq                

            .Filter(f => f.Term(t => t.Username, username))

            .Must(mt=>mt.Term(t2=> t2.Username, username)))));


        //.Must(bs => bs.Term(t => t.Username, username))

        if (searchResponse.Documents.Count > 0)

            return searchResponse.Documents.First();

        else

            return null;

    }

}


温温酱
浏览 134回答 1
1回答

白猪掌柜的

尝试使用 match_phrase 查询进行精确的文本匹配。您的查询应类似于以下内容:&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;searchResponse&nbsp;=&nbsp;client.Search<User>(s&nbsp;=>&nbsp;s &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.Query(q&nbsp;=>&nbsp;q &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.MatchPhrase(m&nbsp;=>&nbsp;m &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.Field(f&nbsp;=>&nbsp;f.Username) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.Query(username))));
打开App,查看更多内容
随时随地看视频慕课网APP