我有兩個表按列「product_code」加入。solr delta導入處理刪除文檔
- 產品
- product_retailer_map
我的SQL查詢:SELECT *產品,COUNT(product_retailer_map.product_code)FROM產品LEFT JOIN product_retailer_map ON product_retailer_map.product_code = products.product_code GROUP BY products.product_code
每當我添加新零售商並執行delta導入,solr正確更新文檔。 每當我添加新產品並執行增量導入,solr正確更新文檔。
但是無論何時我刪除零售商並執行delta導入,solr 不要更新文檔。 此外,每當我刪除產品並執行增量導入,索爾不要更新文件。
我還沒有配置deletedPkQuery因爲我很困惑如何處理2個單獨的刪除。
編輯
< entity name="products"
query="SELECT p.*, COUNT(map.product_code) AS cnt, SUM(CASE WHEN map.retailer_availability > 0 THEN 1 ELSE 0 END) AS available_cnt FROM products AS p LEFT JOIN product_retailer_map AS map ON map.product_code = p.product_code GROUP BY p.product_code ORDER BY available_cnt DESC"
deltaImportQuery="SELECT p.*, COUNT(map.product_code) AS cnt, SUM(CASE WHEN map.retailer_availability > 0 THEN 1 ELSE 0 END) AS available_cnt FROM products AS p LEFT JOIN product_retailer_map AS map ON map.product_code = p.product_code WHERE p.product_id = '${dataimporter.delta.product_id}' GROUP BY p.product_code ORDER BY available_cnt DESC"
deltaQuery="SELECT `product_id` FROM `products` WHERE (product_id IN (SELECT product_id FROM products WHERE product_code IN (SELECT DISTINCT product_code FROM product_retailer_map WHERE updated_at > '${dataimporter.last_index_time}'))) OR (updated_at > '${dataimporter.last_index_time}')"
>
<field column="product_id" name="product_id"/>
<field column="product_code" name="product_code"/>
<field column="product_name" name="product_name"/>
<field column="cnt" name="cnt"/>
<field column="available_cnt" name="available_cnt"/>
</entity >
請建議,如果我做錯了。
另外,我認爲如果我使用2個實體,那麼我可以寫2刪除查詢,並可能是問題將得到正確解決。
你認爲?
你可以發佈你的數據配置嗎?這是XML的一部分,你有所有的查詢和實體... – cheffe 2014-08-29 07:45:55
張貼我的數據配置作爲答案,因爲它超過660個字符。 – 2014-09-03 17:20:47
我已將您的編輯從問題的答案中移除,在問題下方有一個編輯按鈕,您應該使用該編輯按鈕,而不是回答:) – cheffe 2014-09-04 11:27:04