如何处理SOLR中的高亮片段中的html标签

时间:2014-09-09 11:37:29

标签: java search solr lucene

我使用SOLR点击突出显示功能来设置与查询匹配的文档中的突出显示。

问题是其中一个字段包含有效的HTML,但返回的高亮片段不是有效的HTML,这就是渲染整个页面布局被破坏后的原因。

例如查询field:lucene给我这个文件:

<p><a href="/some/link">Here is the discussion, what the difference between SOLR, Elasticsearch and Lucene</a></p>

精彩片段是Elasticsearch and <em>Lucene</em></a></p>

我尝试设置片段大小= 0(返回整个字段内容)的选项之一,但它可能非常大,我只需要几个片段用于结果页面。

另一种选择是删除所有HTML标记并以纯文本显示代码段,但我需要<em>标记才能突出显示。还有一些标签可以像</p那样在片段中被破坏,这意味着我们不能为此目的使用html解析器。

这似乎是搜索中的一个常见问题,是否有一些最先进的方法来处理它?<​​/ p>

1 个答案:

答案 0 :(得分:0)

通常的解决方案是在编制索引之前在途中删除HTML(例如using the HTMLCharFilter)。这样,您就可以使用纯文本字段突出显示,并使用嵌入的<em>标记显示结果。

然后,您可以使用copyField使HTML表示的字段保持不变,而不包含HTML的字段(用于突出显示)。