java - 突出显示包含 HTML 的字段

标签 java solr escaping lucene-highlighter

我有一个字段可能包含 HTML 代码作为用户输入。如果我使用简单的荧光笔,它不会在添加 <em> 之前转义输入标签。例如。如果输入是

"This is a <caption>"

然后我搜索“caption”,我得到:

"This is a <<em>caption</em>>"

但我想得到:

"This is a &lt;<em>caption</em>&gt;"

当呈现为 HTML 时,它看起来与突出显示匹配词的输入相同。

最佳答案

一种技术是使用一些其他标记字符串来指示突出显示。参见 hl.simple.pre and hl.simple.post .这样您就可以先执行转义,而不会丢失突出显示,然后在最后一步用突出显示标记替换哨兵。

例如,Ruby 的 Sunspot Solr 客户端使用 @@@hl@@@对于 hl.simple.pre参数,和 @@@endhl@@@对于 hl.simple.post参数。使用这些值......

  • Solr 返回:This is a <@@@hl@@@caption@@@endhl@@@>
  • HTML 转义:This is a &lt;@@@hl@@@caption@@@endhl@@@&gt;
  • 替换哨兵:This is a &lt;<em>caption</em>&gt;

关于java - 突出显示包含 HTML 的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11948958/

相关文章:

java - 从同一 java 项目中的另一个类调用 Enum 值

java - LWJGL显示和java swing

java - 不使用 Java 验证结果集大小

java - 在 Solr 中存储 PDF

regex - 如何在 perl 替换中转义 REPLACEMENT?

python - Django RSS-feed 转义 €

java - Dijkstra 算法用 C++ 实现并转换为 Java

c# - 如何在solrNet中查询

java - 使用 SolrJ 更新 Solr 中的文档

mysql - 在 Ruby 字符串中转义 ',不转义\插入到 MySQL