首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从查询串中提取匹配条件

从查询串中提取匹配条件
EN

Stack Overflow用户
提问于 2015-06-01 09:46:38
回答 1查看 91关注 0票数 1

ElasticSearch查询是使用带有多个和/ OR运算符的查询字符串形成的。即(条件1或条件2)和(条件3或条件4或条件5),根据条件提供多个文档。为了得到准确的条件,我再次循环所有生成的文档,并标记特定的条件。有什么简单的方法可以得到特定于文档的结果条件吗?

有人可以使用NEST提供更好的示例吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-02 07:09:49

我认为,您需要的是突出显示对查询造成影响的数据。elasticsearch的突出显示功能实际上是标记来自每个搜索结果的文本,这样用户就可以看到为什么文档与查询匹配。在响应中返回标记的文本。

请参考elasticsearch文档,以了解该api实际上是如何工作的。在嵌套文档中查看如何使用Nest库实现它。

例如,使用elasticsearch可以想象以下示例:

代码语言:javascript
复制
GET /someIndex/someType/_search
{
    "query" : {
        "match_phrase" : {
            "about" : "rock climbing"
        }
    },
    "highlight": {
        "fields" : {
            "about" : {}
        }
    }
}

鸟巢也是如此:

代码语言:javascript
复制
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)
        )
    )
);

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

代码语言:javascript
复制
"_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>" 
   ]
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30570307

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档