2012-02-09 16 views
0

でハイライト表示:代わりに、私は内でこの設定を使用している理由ですデフォルトSolrの私はSolrには次のように接頭辞と接尾辞を強調カスタマイズする必要があり、予期せぬ接頭辞と接尾辞

<em>text</em> 

<span class="highlight">text</span> 

<searchComponent class="solr.HighlightComponent" name="highlight"> 
    <highlighting> 
     <fragmentsBuilder name="simple" default="true" class="solr.highlight.SimpleFragmentsBuilder"> 
      <lst name="defaults"> 
       <str name="hl.tag.pre"><![CDATA[<span class="highlight">]]></str> 
       <str name="hl.tag.post"><![CDATA[</span>]]></str> 
      </lst> 
     </fragmentsBuilder> 
    </highlighting> 
</searchComponent> 

HighlightComponentためsolrconfig.xml以下は私の標準的な要求ハンドラのためのデフォルトパラメーターである:

<requestHandler name="standard" class="solr.SearchHandler" default="true"> 
    <lst name="defaults"> 
     <str name="hl">true</str> 
     <str name="hl.fl">body,title</str> 
     <str name="hl.useFastVectorHighlighter">true</str> 
    </lst> 
</requestHandler> 

私は、テキストの単語がハイライト表示されますが、いつも私が設定されたプレフィックスとサフィックスを使用していないのですかtext単語を検索する場合:

<lst name="highlighting"> 
    <lst name="document_1"> 
     <arr name="body"> 
      <str>my <em>text</em> highlighted</str> 
     </arr> 
     <arr name="title"> 
      <str>my <span class="highlight">text</span> highlighted</str> 
     </arr> 
    </lst> 
</lst> 

なぜ誰が知っていますか?

答えて

1

SimpleFragmentsBuilderのプレフィックスとサフィックスが定義されていて他のハイライトが別のフラグメントビルダーから来ているだけなので、この振る舞いが見えていると思います。

私は強調表示にカスタムプレフィックスとサフィックスを使用しています。この値をsolrconfig.xmlのhighlightingセクションのformatterセクションに設定しました。すべてのフラグメントビルダーに適用されるため、この問題は発生していません。

そのため、おそらく次のことを試してください。

<highlighting> 
    <fragmentsBuilder name="simple" default="true" 
      class="solr.highlight.SimpleFragmentsBuilder"/> 
    <!-- Configure the standard formatter --> 
    <formatter name="html" class="org.apache.solr.highlight.HtmlFormatter" 
     default="true"> 
    <lst name="defaults"> 
     <str name="hl.simple.pre"><![CDATA[<span class="highlight">]]></str> 
     <str name="hl.simple.post"><![CDATA[</span>]]></str> 
    </lst> 
    </formatter> 
</highlighting> 
2

私は最終的に理由を発見!私はfastVectorHighlighterを使って、より速くハイライト表示させています。 最初はtitleフィールドだけを強調表示していて、すべて正常に機能しました。 bodyフィールドを強調表示に追加したとき、私はtermVectors=trueを有効にするのを忘れました。 今フルREINDEXのハイライトは完全に働いた後、私のbodyフィールドは、この

<field name="body" type="text" indexed="true" stored="true" termVectors="true" termPositions="true" termOffsets="true" /> 

のように見えること:

<lst name="highlighting"> 
    <lst name="document_1"> 
     <arr name="body"> 
      <str>my <span class="highlight">text</span> highlighted</str> 
     </arr> 
     <arr name="title"> 
      <str>my <span class="highlight">text</span> highlighted</str> 
     </arr> 
    </lst> 
</lst> 

は、以前は本文フィールドのハイライトは、仕事をしましたが、fastVectorHighlighterせずにフィールドを持っていなかったので、 termVectors=trueパラメータ。だから私はbodyをデフォルトの接頭辞と接尾辞で強調表示しています。 fastVectorHighlighterは完全に異なる強調表示方法なので、設定も異なります。

限り、ユーザーはhl.fl parameterを強調するためにフィールドものを選択することができ、私はまた、このような標準的なハイライト(フォーマッタ要素、クラスsolr.highlight.HtmlFormatter)の設定を含めることをお勧めしたい、ミスのこの種のを避けるために:

<searchComponent class="solr.HighlightComponent" name="highlight"> 
    <highlighting> 
     <formatter name="html" default="true" class="solr.highlight.HtmlFormatter"> 
      <lst name="defaults"> 
       <str name="hl.simple.pre"><![CDATA[<span class="highlight">]]></str> 
       <str name="hl.simple.post"><![CDATA[</span>]]></str> 
      </lst> 
     </formatter> 
     <fragmentsBuilder name="simple" default="true" class="solr.highlight.SimpleFragmentsBuilder"> 
      <lst name="defaults"> 
       <str name="hl.tag.pre"><![CDATA[<span class="highlight">]]></str> 
       <str name="hl.tag.post"><![CDATA[</span>]]></str> 
      </lst> 
     </fragmentsBuilder> 
    </highlighting> 
</searchComponent> 

この方法では、termVectorsが無効のフィールドでも、同じ接頭辞と接尾辞が使用できます。

関連する問題