java - 如何在SOLR中处理突出显示片段中的html标签

标签 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 解析器来实现此目的。

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

最佳答案

通常的解决方案是在索引之前剥离 HTML(例如 using the HTMLCharFilter )。这样,您将拥有一个可以突出显示的纯文本字段,并使用嵌入的 <em> 显示结果。标签。

然后您可以使用 copyField拥有一个具有完整 HTML 表示形式的字段,以及一个不包含 HTML 的字段(用于突出显示)。

关于java - 如何在SOLR中处理突出显示片段中的html标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25743671/

相关文章:

Fedora Commons 中的 tomcat 升级问题

java - 检测Android App收到扫描请求时是否发送BLE扫描响应

java - 进度对话框未显示在 AsyncTask 中

java - Camera2 API Samsung Galaxy S9+ 不支持高于 240 的 FPS 范围?

java - 具有分隔值性能的列表

php - 根据关键字出现对搜索结果进行排名

带有包含的 WPF 组合框文本搜索

search - Coldfusion 和分页

java - 在JAVA中使用Solr和MySQL进行查询

Solr4 Cloud Beta 版本异常 org.apache.lucene.store.AlreadyClosedException : this IndexWriter is closed