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

时间:2015-02-04 13:54:17

标签: solr

我有一个可以包含富文本编辑器中的html文本的正文字段。我希望能够从中返回突出显示的片段,但是html被剥离了。

获取索引的下方文字:

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

如果您搜索&#39;单词&#39;,您可能会获得以下高亮显示片段(取决于片段长度等):

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 个答案:

答案 0 :(得分:2)

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

  1. content_html:原始html,使用HtmlStripCharFilterFactory,因此只需将html内容编入索引/标记化
  2. content_stripped:仅限文本内容,将用于突出显示的片段
  3. 在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

相关问题