ElasticSearch查询是使用带有多个和/ OR运算符的查询字符串形成的。即(条件1或条件2)和(条件3或条件4或条件5),根据条件提供多个文档。为了得到准确的条件,我再次循环所有生成的文档,并标记特定的条件。有什么简单的方法可以得到特定于文档的结果条件吗?
有人可以使用NEST提供更好的示例吗?
发布于 2015-06-02 07:09:49
我认为,您需要的是突出显示对查询造成影响的数据。elasticsearch的突出显示功能实际上是标记来自每个搜索结果的文本,这样用户就可以看到为什么文档与查询匹配。在响应中返回标记的文本。
请参考elasticsearch文档,以了解该api实际上是如何工作的。在嵌套文档中查看如何使用Nest库实现它。
例如,使用elasticsearch可以想象以下示例:
GET /someIndex/someType/_search
{
"query" : {
"match_phrase" : {
"about" : "rock climbing"
}
},
"highlight": {
"fields" : {
"about" : {}
}
}
}鸟巢也是如此:
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>"
]
}https://stackoverflow.com/questions/30570307
复制相似问题