从querystring中提取匹配条件

Extracting matching conditions from querystring

ElasticSearch 查询是使用具有多个 AND / OR 运算符的查询字符串形成的。即((条件 1 或条件 2)和(条件 3 或条件 4 或条件 5)),根据它为我提供多个文件的条件。为了获得准确的条件,我再次循环遍历所有生成的文档并标记特定条件。是否有任何简单的方法来获取特定于文档的结果条件?

谁能提供使用 NEST 的更好示例 API?

我认为您需要的是突出显示对您的查询产生影响的数据。 elasticsearch 的高亮功能实际上标记了每个搜索结果中的文本,因此用户可以看到文档与查询匹配的原因。响应中返回标记的文本。

请参阅 elasticsearch documentation in order to understand how this api actually works. Refer in the Nest Documentation 以了解如何使用 Nest 库实现它。

例如,使用 elasticsearch api 想象下面的例子:

GET /someIndex/someType/_search
{
    "query" : {
        "match_phrase" : {
            "about" : "rock climbing"
        }
    },
    "highlight": {
        "fields" : {
            "about" : {}
        }
    }
}

与 Nest 相同:

var result = _client.Search<someIndex>(s => s
    .Query(q => q
        .MatchPhrase(qs => qs
            .OnField(e => e.about)
            .Query("rock climbing")
        )
    )
    .Highlight(h => h
        .OnFields(f => f
            .OnField(e => e.about)
        )
    )
);

每个搜索结果的响应将采用以下形式(注意突出显示部分)

"_score": 0.23013961,
"_source": {
   "first_name":  "John",
   "last_name":   "Smith",
   "age":         25,
   "about":       "I love to go rock climbing",
   "interests": [ "sports", "music" ]
},
"highlight": {
   "about": [
      "I love to go <em>rock</em> <em>climbing</em>" 
   ]
}