我使用 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 解析器来实现此目的。
这似乎是搜索中的一个常见问题,是否有一些最先进的方法来处理这个问题?
最佳答案
通常的解决方案是在索引之前剥离 HTML(例如 using the HTMLCharFilter )。这样,您将拥有一个可以突出显示的纯文本字段,并使用嵌入的 <em>
显示结果。标签。
然后您可以使用 copyField
拥有一个具有完整 HTML 表示形式的字段,以及一个不包含 HTML 的字段(用于突出显示)。
关于java - 如何在SOLR中处理突出显示片段中的html标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25743671/