3

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

"This is a <caption>"

我搜索“标题”,我得到:

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

但我想得到:

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

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

4

3 回答 3

3

One technique is to use some other sentinel string to indicate highlighting. See hl.simple.pre and hl.simple.post. That way you can perform escaping first, without losing your highlighting, and then replace the sentinels with highlighting markup as a final step.

For example, the Sunspot Solr client for Ruby uses @@@hl@@@ for the hl.simple.pre param, and @@@endhl@@@ for the hl.simple.post param. Using these values…</p>

  • Solr returns: This is a <@@@hl@@@caption@@@endhl@@@>
  • HTML escaping: This is a &lt;@@@hl@@@caption@@@endhl@@@&gt;
  • Replace the sentinels: This is a &lt;<em>caption</em>&gt;
于 2012-08-15T15:13:14.533 回答
3

Solr 4.3.1 具有启用特定编码器的选项,用于高亮显示生成 XML/HTML 转义片段。放

<str name="hl.encoder">html</str> 

在 solrconfig.xml 中的 /config/requestHandler[@name="/select"]/lst[@name="defaults"] 下方。也可以通过&hl.encoder=html在url中设置参数。标准 solrconfig.xml 包含此编码器的定义

<!-- Configure the standard encoder -->
<encoder name="html" class="solr.highlight.HtmlEncoder" />

示例:“X < Y < Z”将突出显示为

X &lt; <em>Y</em> &lt; Z

搜索“Y”时。Solr XML 响应包含

X &amp;lt; &lt;em&gt;Y&lt;/em&gt; &amp;lt; Z

当然,在 str 元素中。

于 2014-03-06T14:20:31.380 回答
0

您可以使用 String.replace 替换"<<"with"&lt;<"">>"with ">&gt;"。如果您想要任何更具体的替换,您也可以指定它们

于 2012-08-14T09:13:52.077 回答