我想使用DataImportHandler保持我的索引與SQL數據庫同步(我認爲是一個非常香草的事情)。由於我的數據庫會很大,我想使用增量導入使用此方法http://wiki.apache.org/solr/DataImportHandlerDeltaQueryViaFullImport,因此調用的格式爲http://localhost:8983/solr/Items/dataimport?command=full-import&clean=false
。這對於添加項目非常有效。Solr刪除與自定義全進口
我有一個單獨的DeletedItems表在我的數據庫,其中包含已從項刪除表,用的時候被一併刪除的項目的主鍵。由於DataImport調用的一部分,我希望能夠基於沿
SELECT Id FROM DeletedItems WHERE WasDeletedOn > '${dataimporter.last_index_time}'
行查詢從我的索引中刪除相關的項目,但我無法弄清楚如何做到這一點。上面的鏈接暗指與神祕的
在這種情況下,這意味着,如果你還想使用deletedPkQuery,那麼當運行delta-import命令仍然是必要的。
但將deletedPkQuery設置爲上述SQL查詢似乎不起作用。然後我讀到deletedPkQuery只能用於delta導入,所以我不得不向solr服務器發出兩個請求,作爲同步過程的一部分?這看起來不正確,因爲操作由dataimporter.last_index_time
屬性參數化,該屬性發生更改。這兩個步驟都需要在一個「原子」行動中完成,當然?有任何想法嗎?
感謝您的答覆。儘管我試圖避免增量導入,因爲他們似乎對deltaQuery查詢返回的每個PK發出一個數據庫調用(所以總共n + 1個),當時只有一個可以。從Solr文檔:「注意:在Solr中更新文檔是一種替代方法,在許多情況下,這種方法更加高效,並且需要在http://wiki.apache.org/solr/DataImportHandlerDeltaQueryViaFullImport上解釋更少的配置。他們在那裏解釋的方法對增量導入非常有效,但我無法理解他們打算如何配置刪除。 –
請注意,這是一個完全導入的使用,但它*不*清除索引,只是增加/更新文件 –
啊,好點。我錯過了那個細節。我想你將不得不發出兩個命令 - 一個用於完全導入,然後是一個delta-import以後觸發刪除。全進口刪除通常使用'clean = true'來處理。要使刪除工作與DeltaQueryViaFullImport中描述的技術一起使用,您必須手動處理它們(通過刪除字段,之後您可以使用deleteByQuery或通過觸發刪除的增量導入查詢進行清除)。你在進口之間刪除了多少文件? – MatsLindh