2014-09-29 83 views
0

我遇到了突出顯示Solr響應中多值字段的問題。我如何突出顯示與我的solr過濾器查詢匹配的多值字段?下面是那種我的文檔中,突出顯示solr響應中的多值字段

<doc> 
    <str name="id">CAID_332_1003</str> 
    <arr name="lang_spec_labels"> 
     <str>1_Label for UK</str> 
     <str>2_Label for US</str> 
     <str>4_Label for FR</str> 
    </arr> 
</doc> 


#My solr config details 

<requestHandler name="/select" class="solr.StandardRequestHandler"> 
    <lst name="defaults"> 
    <str name="hl">on</str> 
    <str name="hl.fl">lang_spec_labels</str> 
    <str name="hl.encoder">html</str> 
    <bool name="hl.preserveMulti">false</bool> 
    <bool name="hl.useFastVectorHighlighter">true</bool> 
    <str name="f.lang_spec_labels.hl.fragsize">100</str> 
    <str name="f.lang_spec_labels.hl.alternateField">lang_spec_labels</str> 
    <str name="f.lang_spec_labels.hl.maxAlternateFieldLength">750</str> 
    <str name="hl.bs.type">SENTENCE</str> 
    </lst> 
</requestHandler> 

<searchComponent class="solr.HighlightComponent" name="highlight"> 
    <highlighting class="org.apache.solr.highlight.PostingsSolrHighlighter"> 
    <fragmentsBuilder name="default" default="true" class="solr.highlight.ScoreOrderFragmentsBuilder"> 
     <lst name="defaults"> 
      <str name="hl.multiValuedSeparatorChar">##</str> 
     </lst> 
    </fragmentsBuilder> 

    <encoder name="html" class="solr.highlight.HtmlEncoder" /> 

    <formatter name="html" 
      default="true" 
      class="solr.highlight.HtmlFormatter"> 
    <lst name="defaults"> 
     <str name="hl.simple.pre"><![CDATA[<em>]]></str> 
     <str name="hl.simple.post"><![CDATA[</em>]]></str> 
    </lst> 
    </formatter> 

    </highlighting> 
</searchComponent> 

My Solr query like q=lang_spec_labels:(1_*) 

My Solr Response 
<?xml version="1.0" encoding="UTF-8"?> 
<response> 

<lst name="responseHeader"> 
<int name="status">0</int> 
<int name="QTime">7</int> 
</lst> 
<result name="response" numFound="1" start="0"> 
<doc> 
<arr name="lang_spec_labels"> 
    <str>1_Label for UK</str> 
    <str>2_Label for US</str> 
    <str>4_Label for FR</str> 
</arr></doc> 
</result> 
<lst name="highlighting"> 
<lst name="CAID_332_1003"> 
<arr name="lang_spec_labels"> 
     <str>1&#95;Label&#32;for&#32;UK&#32;2&#95;Label&#32;for&#32;US&#32;4&#95;Label&#32;for&#32;FR</str> 
</arr> 
</lst> 
</lst> 

現在用CITIES:*DEL*查詢,Solr的高亮顯示其中包含DEL其詞的反應應該只返回城市。我怎樣才能做到這一點?

是否有任何想法或建議如何解決這個問題?

尋找來自各位的積極響應SOLR怪才......

預先感謝您的支持。

問候, 阿希什米什拉

+0

你能提供準確的查詢?你用於「CITIES」的字段類型是什麼?在您的SolrConfig中如何定義高亮組件?我剛剛在我的一臺Solr服務器上執行了一個查詢,進行模糊搜索,我可以看到亮點。你還可以粘貼你從查詢中得到的確切回覆嗎?你使用的是什麼版本的Solr? – jay 2014-09-30 00:21:59

+0

親愛的周杰倫, 首先感謝您的關注。我已經使用solr響應以及solr查詢更新了solr config和highlighter組件的帖子。 – 2014-10-07 05:19:14

回答

0

作爲參數名稱所示,multiValuedSeparatorChar應該是一個單個字符。你沒有得到這樣的例外嗎?

null:java.lang.IllegalArgumentException: hl.multiValuedSeparatorChar must be exactly one character. 

所以我建議使用一個單個字符:

<str name="hl.multiValuedSeparatorChar">#</str>