2012-09-25 160 views
0

Solr/Lucene模式中的唯一鍵可以替代爲text_general嗎?我已經嘗試過,但Solr不會覆蓋數據,它只是添加另一行,因此重複數據。唯一的密鑰是否必須是Solr中的uuid?

我註釋掉從solrconfig.xml

<searchComponent name="elevator" class="solr.QueryElevationComponent" > 
<!-- pick a fieldType to analyze queries --> 
<str name="queryFieldType">string</str> 
<str name="config-file">elevate.xml</str> 
</searchComponent> 

schema.xml下面有

<uniqueKey>_id</uniqueKey> 
<field name="_id" type="text_general" indexed="true" stored="true" default="NEW"/> 

任何幫助將不勝感激。

+0

我可否知道我的答案是否有幫助? – javanna

+0

我沒有時間去測試你提供的東西,我相信當我回來搜索我的項目時我會。同時將此標記爲答案.. –

回答

2

您可以使用任何類型的uniqueKey字段。正如你可以從文檔閱讀:

的聲明可以用來告知Solr的,有你的指數 字段,它應該是所有的文件是唯一的。如果添加了一個 文檔,該文檔包含與該字段相同的值作爲 現有文檔,則舊文檔將被刪除。

模式不具有uniqueKey字段是強制性的。

請注意,如果您在 solrconfig.xml中啓用了QueryElevationComponent,則它需要模式具有類型爲 StrField的uniqueKey。它不能是,例如,一個int字段。

重要的是,uniqueKey字段是唯一的,這意味着同一個文檔具有相同的標識符。只有這樣取代現有的機制可以工作。使用uuid字段類型,您永遠不會替換文檔,因爲您會自動爲每個文檔分配一個不同的ID。

相關問題