如何在 Solr 中突出显示包含 html 的字段中的查询词

How to highlight a query term in a field containing html in Solr

我有一个正文字段,其中可能包含来自富文本编辑器的 html 文本。我希望能够从中 return 突出显示片段,但 html 被删除。

将下面的文本编入索引:

<p class="something">some text here with words and other text</p>

如果您搜索 'words',您可能会得到以下突出显示的片段(取决于片段长度等):

class="something">some text here with <em>words</em> and other text</p> 或者 class="something">some text here with <em>words</em> and other text

其中HTML被拆分,会造成前端渲染问题。我想在应用突出显示之前删除 html 。我尝试了不同的突出显示组件,但没有看到任何可以解决问题的属性。

我需要在索引之前去除 HTML 吗? 或者有其他技术吗?

目前我正在使用 HTMLStripCharFilterFactory 在索引时删除 HTML,但突出显示组件使用的是原始 html 的底层存储数据。

我也有同样的问题,得出结论,唯一的办法就是使用两个字段,例如:

  1. content_html:原始 html,使用 HtmlStripCharFilterFactory 所以 html 内容将是 indexed/tokenized
  2. content_stripped: 仅文本内容,将用于高亮片段

在 C# 中,我会使用 HtmlAgilityPack,例如,将 HTML 加载到文档中,然后在根节点上调用 .Text。

应存储这两个字段,以便您可以将纯文本字段用于片段,将 html 字段用于突出显示整个字段。

我查看了 Solr 和 ElasticSearch,发现没有内置方法,因为突出显示是在存储的任何内容上执行的。

相关:Solr Strip html when highlighting with stored html fields

相关:How to handle html tags in highlight fragment in SOLR