Elasticsearch NEST highlights

本文关键字:highlights NEST Elasticsearch | 更新日期: 2023-09-27 18:13:41

我刚刚开始在c#项目中使用elasticsearch。我想在结果页面中突出显示搜索的关键词,但不知道如何处理它们的显示。

我的查询如下

result = client.Search<MyContentClass>(s => s
            .Query(a => 
            a.MatchPhrase(m => m.OnField("_all").Query(m_strSearchQuery))
            .From(intFrom)
            .Size(intSize)
            .Highlight(h => h
            .PreTags("<b style='color:orange'>")
            .PostTags("</b>")
            .OnFields(f => f
            .OnField(e => e.Title)
            .OnField(e => e.Content)                
            )
            )
            ); 

然后我将结果设置为一个变量,该变量是我的中继器的数据

var documents = result.Hits.Select(h => h.Source);
this.rptSearch.DataSource = documents;
    this.rptSearch.DataBind();
    this.rptSearch.Visible = true;

我在搜索结果中没有看到任何高亮显示的术语,也没有看到在高亮显示标签中包装的术语…

我做错了什么?

Elasticsearch NEST highlights

亮点存储在Hit对象的Hightlights属性中。

你可以这样访问它们:

result.Hits.Select(h => h.Highlights.Values.Select(v => string.Join(", ", v.Highlights)))

希望能有所帮助。