1

我正在尝试使用下面的代码从我的搜索中获取亮点。尽管尝试了各种各样的东西,结果上的 Highlights 集合始终是空的。

使用 ElasticSearch 服务器 2.3.1 和 NEST 2.3.0。

results = _client.Search<dynamic>( d =>
            d.AllIndices()
            .AllTypes()
            .Query( q => q.QueryString( s => s.Query( query ) ) )
            .Highlight(h => 
                 h.Fields( f => 
                    f.Field( "*" ).PreTags("<em>").PostTags("</em>")
                 )
             )
         );
4

2 回答 2

0

根据我的经验,要让荧光笔返回带有 * 字段请求的数据,您还需要在其自己的高亮查询中为其提供查询的副本。

请原谅本机格式,但这里有一个示例,它将从 * 字段模式产生亮点:

  "fields": {
     "*": {
        "highlight_query": {
           "query_string": {
              "query": "same as string query value"
           }
        }
     }
  }
于 2016-05-16T15:29:25.520 回答
0

我想这是因为您使用的是查询字符串。如果您正在查询多个字段,您可以将其更改为 MultipleMatch,或者如果您只是查询 1 个字段,您可以使用 Match。只需注意特殊字符。假设您在 Field1 上进行查询,但查询关键字(搜索关键字)是这样的 field2:“您的关键字在此处”我认为您没有任何亮点。或者您可能得到错误的结果。

于 2016-10-07T16:49:58.880 回答