2012-11-29 45 views
1

我一直在玩solr大約一週。我的問題可能與突出顯示有關,因爲我無法在SO或Internet上的任何地方找到解決方案。solr突出顯示結果 - <lst>節點不包含名稱屬性

我已啓用突出顯示,幾乎一切正常 - 我得到的搜索結果和突出顯示的部分返回<lst name="highlighting">

問題是,實際上包含高亮部分文本的子節點都沒有名稱屬性,該屬性應該與相應結果項的ID屬性相同。

下面是使用solr admin從搜索返回結果的摘錄。

<result name="response" numFound="121" start="0" maxScore="2.3798883"> 
    <doc> 
    <float name="score">2.3798883</float> 
    <str name="Turn">Android Linux</str> 
    <str name="id">dcc190ba-143b-4fb7-b868-ef06875210fe</str> 
    <float name="startTime">961.98</float> 
    </doc> 
    <doc> 
    <float name="score">1.009701</float> 
    <str name="Turn"> 
     ci sono per� degli aspetti diversi perch� Microsoft vendeva windows mentre l' Ugl  regala Android che quindi la licenza Android non costa nulla 
    </str> 
    <str name="id">804df3fb-3709-4bf8-a0d0-718dc5da18f1</str> 
    <float name="startTime">2445.19</float> 
    </doc> 
</result> 
<lst name="highlighting"> 
    <lst> 
    <arr name="Turn"> 
     <str><span class="highlight">Android</span> Linux</str> 
    </arr> 
    </lst> 
    <lst> 
    <arr name="Turn"> 
    <str>ci sono per degli aspetti diversi perch Microsoft vendeva windows mentre l' Ugl  regala <span class="highlight">Android</span> 
    </str> 
    </arr> 
    </lst> 
    <lst> 
    <arr name="Turn"> 
    <str><span class="highlight">Android</span> nd Kappa e l' ambiente che ci permette di  scrivere in codice in attivo 
    </str> 
    </arr> 
    </lst> 
</lst> 

可以看出,每個結果都有id屬性。只是它沒有在節點中使用。

我使用的是由solr自動生成的id的uuid類型。

這是我的schema.xml文件的一部分。

<field name="id" type="uuid" indexed="true" stored="true" required="true" default="NEW"/> 
<field name="startTime" type="float" indexed="true" stored="true" /> 
<field name="Turn" type="text_general" indexed="true" stored="true"/> 

的字段類型UUID是作爲在下面的Schema.xml文件中定義:

<fieldType name="uuid" class="solr.UUIDField" indexed="true" /> 

而下面是生成的ID(solrconfig.xml中)更新處理器:

<updateRequestProcessorChain name="uuid"> 
    <processor class="solr.processor.SignatureUpdateProcessorFactory"> 
    <bool name="enabled">true</bool> 
    <str name="signatureField">id</str> 
    <bool name="overwriteDupes">false</bool> 
    <str name="fields">*</str> 
    <str name="signatureClass">solr.processor.Lookup3Signature</str> 
    </processor> 
    <processor class="solr.LogUpdateProcessorFactory" /> 
    <processor class="solr.RunUpdateProcessorFactory" /> 
</updateRequestProcessorChain> 

如果沒有id作爲項目中name屬性的值,我將無法進行進一步處理,例如替換結果中的文本。 我希望這個信息足夠。請不要讓我知道。我一直在試圖讓這個問題有兩天的時間。

乾杯。

+0

我正在使用solr 3.6,FYI。 –

回答

0

在另一個試圖讓它工作的絕望嘗試中,我用原始文件替換了我的solrconfig.xml文件,只回復了我所做的特定更改,並且問題消失了。我確信這個問題可以追蹤到幾條具體的線路,因爲在我的練習的頭幾天裏,我必須在那裏添加一些東西,這些東西已經搞亂了我。

+0

標記爲正確的答案,因爲沒有其他人有解決方案... –

2

我和你有同樣的問題。唯一的區別是,我開始了一個新的solr實例。所以我沒有原創的回去。

我通過用'string'替換id類型並在數據中添加自定義唯一鍵來修復它。此外,我還將唯一的關鍵元素添加到配置中。

<uniqueKey>id</uniqueKey> 
<field name="id" type="string" indexed="true" stored="true" required="true" /> 

這解決了我的問題。不知何故,它不適用於'uuid'類型。

希望這可以幫助任何人遇到相同的問題。

注意:uniqueKey字段應該在「字段」節點之外

+0

這是正確的答案(注意部分) – Marcel