【问题标题】:How to highlight a query term in a field containing html in Solr如何在 Solr 中突出显示包含 html 的字段中的查询词
【发布时间】:2015-08-12 09:29:34
【问题描述】:

我有一个正文字段,其中可能包含来自富文本编辑器的 html 文本。我希望能够从中返回突出显示的 sn-ps,但去掉了 html。

获取下面被索引的文本:

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

如果您搜索“单词”,您可能会得到以下突出显示 sn-p(取决于片段长度等):

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 的底层存储数据。

【问题讨论】:

  • 对于遇到同样问题的任何人......我最终在进入 Solr 之前剥离了 html

标签: solr


【解决方案1】:

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

  1. content_html:原始 html,使用 HtmlStripCharFilterFactory,因此只有 html 内容将被索引/标记
  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

【讨论】:

  • 感谢您添加答案 - 已将其标记为其他遇到此问题的人。
  • pholly 和 @IanRoutledge -- 您能否确认即使是用户 "char_filter" : ["html_strip"] 的分析器也不会在这里提供帮助,因为分析器只会影响分析内容的方式(标记化等)(和/或如何分析查询);分析器不会影响它的存储方式,并且由于 stored 值对高亮片段很重要,因此分析器无法修复此高亮 -碎片问题?
猜你喜欢
  • 1970-01-01
  • 2023-04-07
  • 2019-05-18
  • 2016-04-26
  • 2014-02-05
  • 1970-01-01
  • 1970-01-01
  • 2011-09-18
  • 1970-01-01
相关资源
最近更新 更多