2014-02-18 86 views
1

我想安裝solr與postgres db,我通過燒瓶sqlalchemy orm使用。我爲此目的找到了庫pysolr,但是不清楚如何在sqlalchemy模型中設置鉤子來更新solr索引。有沒有例子?使用solr/pysolr與燒瓶sqlalchemy

pysolr建議通過solr.add手動插入文檔,但不清楚如何分隔不同數據庫表的索引。

做一些研究後,我想出了下面的方法,我想知道如果這是要走正道:

  1. 在ORM模型

    ,鉤after_insert,after_update,after_remove和after_commit和插入/在這些事件中更新/刪除solr中的對象數據。

  2. 要分離不同模型的數據,請在solr文檔的「id」字段中使用表名作爲前綴。當您執行搜索時,獲取所有結果,手動過濾匹配所需數據庫表的那些數據,提取ID,查找針對這些ID的數據庫並使用這些數據庫結果。

有沒有更好的方法來做到這一點?謝謝。

回答

0

SQLAlchemySolr是不同的結構。我認爲一個更好的解決方案是實現一個腳本來同步數據。運行腳本可能需要30分鐘或一小時更新新數據。

在模型中綁定insert/update/remove/commit機制並不好。因爲如果您的Solr服務有任何問題,您的網站(關於訪問數據庫)將受到影響。保持差異服務獨立。

+0

我正計劃在模型事件上觸發芹菜任務,以保持兩項服務有點遠。我也可以嘗試使用單獨的腳本。你能評論一下屬於不同表格的數據分離嗎? –

+0

嗯...是的。使用芹菜也是一個很好的解決方案。 :) –

+0

將數據添加到Solr時,它將成爲搜索的文檔結構。如果需要搜索,我認爲您可以根據您的需求從不同的表中獲取任何數據。 –