2013-09-27 18 views
1

我唯一鍵的定義:可以更新Solr 4中的uniqueKey嗎?作爲

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

我加載多個文檔到Solr中與其對應的「ID」字段,我現在需要的是UPDATE「ID」值,這是可能的嗎?

當我嘗試這樣做,我得到這個錯誤:

Document contains multiple values for uniqueKey field 

我使用Apache Solr實現4.3.0

回答

2

這不是直接可能。在我介紹如何間接地做這件事之前,我需要解釋一些事情。

uniqueKey字段中的值是Solr如何處理文檔更新/替換。當您爲索引發送文檔時,如果已存在具有相同uniqueKey值的現有文檔,Solr將在索引新索引之前刪除自己的副本。

原子更新功能稍有不同。它允許更新添加,更改或刪除除uniqueKey字段之外的文檔中的任何字段 - 因爲這是Solr識別文檔的方式。

你需要做的是基本上索引一個包含舊文檔所有數據的新文檔,並刪除舊文檔。如果文檔中的所有字段都可用於索引編制過程,那麼您可以在刪除舊文檔之前或之後索引新文檔。否則,您可以從Solr中查詢現有的文檔,創建一個新的文檔並對其進行索引,然後刪除舊的文檔。

爲了使用現有的Solr文檔來索引一個新的索引文件,必須存儲所有的字段,除非它們是copyField目的地,在這種情況下它們不能被存儲。原子更新(上面討論)具有相同的要求。如果其中一個或多個字段未存儲,則搜索結果將不包含該字段,數據將丟失。