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

1つの手法は、他のセンチネル文字列を使用して強調表示を示すことです。hl.simple.preおよびhl.simple.postを参照してください。そうすれば、ハイライトを失うことなく最初にエスケープを実行し、最後のステップとしてセンチネルをハイライトマークアップに置き換えることができます。

たとえば、Ruby用のSunspot Solrクライアントは、@@@hl@@@paramhl.simple.preとparamに使用します。これらの値を使用する…</p> @@@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;
于 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」を検索するとき。SolrXML応答には次のものが含まれます

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

もちろん、str要素で。

于 2014-03-06T14:20:31.380 に答える
0

String.replaceを使用して"<<""&lt;<"および">>"に置き換えることができます">&gt;"。より具体的な置換が必要な場合は、それらも指定できます

于 2012-08-14T09:13:52.077 に答える