我无法弄清楚如何通过MatchPhrasePrefix搜索索引中的文档。我希望匹配整个搜索词短语,但允许最后一个词的前缀。
这个LINQ结构让我得到1.0分的所有东西。我该如何构建它?另外,有没有看到NEST正在构建的原始查询?那会非常有用!
var search = new SearchDescriptor<ObservationElasticModel>();
search = search
.Query(q => q.MatchPhrase(m => m.Query(term)));
var response = _client.Search<ObservationElasticModel>(search);
答案 0 :(得分:3)
您可以在 QueryDescriptor 上使用 MatchPhrasePrefix 方法。您可能还需要将Operator设置为AND。
_client.Search<ObservationElasticModel>(s => s
.Query(q => q
.MatchPhrasePrefix(m => m
.Operator(Operator.And)
.Query(term)));
您可以在安装过程中通过调用ConnectionSettings实例上的 EnableTrace()和 ExposeRawResponse()将原始查询记录到调试控制台。
var settings = new ConnectionSettings(new Uri(searchUri));
settings.EnableTrace();
settings.ExposeRawResponse();
_client = new ElasticClient(settings);