2011-10-18 57 views
1

我正在構建一個搜索引擎,並且對於許多不同的名稱都沒有如此唯一的ID ...因此,例如,可能會有一個B0051QVF7A的ID,它可能具有多個名稱「Kindle」「亞馬遜Kindle」「亞馬遜Kindle 3G」「Kindle電子書閱讀器」「新Kindle」等Solr MultiValue字段並添加值

問題和我有問題是,我試圖從數據庫輸入這個數據11 ish百萬行。每次只讀一個。所以我沒有每個ID的所有名稱。我每次都在列表中添加新文檔。

我想知道的是如何爲現有文檔添加名稱?如果我正確閱讀文檔,它似乎覆蓋整個文檔,而不是添加額外的信息到該字段...我只是想添加一個額外的名稱到文檔多值字段...

我知道這可能會導致如果一個名字被刪除了一些奇怪和奇妙的「問題」(在上面的例子中,當新的Kindle被髮布時,「新的Kindle」可以被刪除),但我正在考慮重新創建索引,以清除像(一個月左右,目前約45分鐘創建索引)。

那麼,如何爲現有文檔的solr中的多值字段添加值?

+0

[更新SOLR索引上的特定字段]的可能的副本(http://stackoverflow.com/questions/2032813/update-specific-field-on-solr-index) –

回答

1

由於根據@Mauricio Scheffer的評論鏈接到的問題... Solr目前不支持更新現有文檔中的單個字段值。我發現這裏可能有幾種選擇...

  1. 在您的從數據庫中提取數據的過程中,當它找到一個新名稱時,它將需要從現有文檔中提取所有字段Solr,添加新的值並將完整的文檔重新發送到Solr(您可能已經在這樣做)。
  2. 向您的代碼添加一些額外的邏輯,從數據庫讀取數據,以便在將文檔插入索引之前收集每個文檔的所有唯一名稱。但是,鑑於您有大約1100萬條記錄,可能會有資源限制,從而阻止這種做法的可行性。
+0

感謝您的注意。我實際上已經嘗試過選項2 ...查詢所有不同的ID,然後從表中選擇所有數據,ID =表示ID ...比原來慢,但可能比選項1快... – TiernanO