我有一个字段可能包含HTML代码作为用户输入。如果我使用简单的荧光笔,它在添加<em>
标记之前不会转义输入。例如。如果输入是
"This is a <caption>"
我搜索&#34;标题&#34;,我得到:
"This is a <<em>caption</em>>"
但我想得到:
"This is a <<em>caption</em>>"
当呈现为HTML时,与匹配单词突出显示的输入相同。
答案 0 :(得分:3)
一种技巧是使用其他一些标记字符串来指示突出显示。见hl.simple.pre
and hl.simple.post
。这样你就可以先执行转义,而不会丢失突出显示,然后用突出显示标记替换标记作为最后一步。
例如,Ruby的Sunspot Solr客户端使用@@@hl@@@
用于hl.simple.pre
参数,@@@endhl@@@
用于hl.simple.post
参数。使用这些值......
This is a <@@@hl@@@caption@@@endhl@@@>
This is a <@@@hl@@@caption@@@endhl@@@>
This is a <<em>caption</em>>
答案 1 :(得分:3)
Solr 4.3.1可以选择为高亮显示启用特定编码器以生成XML / HTML转义片段。把
<str name="hl.encoder">html</str>
在solrconfig.xml中的/ config / requestHandler [@name =“/ select”] / lst [@ name =“defaults”]下面。该参数也可以通过&amp; hl.encoder = html在url中设置。标准solrconfig.xml包含此编码器的定义
<!-- Configure the standard encoder -->
<encoder name="html" class="solr.highlight.HtmlEncoder" />
示例:“X&lt; Y&lt; Z”将突出显示为
X < <em>Y</em> < Z
搜索“Y”时。 Solr XML响应包含
X &lt; <em>Y</em> &lt; Z
当然,在str元素中。
答案 2 :(得分:0)
您可以使用String.replace将"<<"
替换为"<<"
,将">>"
替换为">>"
。如果您想要更具体的替换,您也可以指定它们