我想利用Lucene在我的應用程序中開發全文搜索,這需要根據我的mysql數據庫建立索引。我想知道如何保持這些索引與數據庫同步? 我想出了方法: 1)緊緊地在業務邏輯中添加額外的代碼來更新搜索索引。 2)運行一個單獨的任務來定期重建索引。如何保持Lucene索引與Mysql數據庫同步?
你有沒有其他方法?你認爲最好的方法是什麼? 任何意見將不勝感激,在此先感謝!
我想利用Lucene在我的應用程序中開發全文搜索,這需要根據我的mysql數據庫建立索引。我想知道如何保持這些索引與數據庫同步? 我想出了方法: 1)緊緊地在業務邏輯中添加額外的代碼來更新搜索索引。 2)運行一個單獨的任務來定期重建索引。如何保持Lucene索引與Mysql數據庫同步?
你有沒有其他方法?你認爲最好的方法是什麼? 任何意見將不勝感激,在此先感謝!
您可以在MySQL中設置觸發器來更新所有插入/更新/刪除文檔的更改文檔。另外,你可以在應用程序中設置一個Filter(javax.servlet spec)來攔截服務器請求,並在它們到達數據庫之前將它們推送到你的索引(它甚至可以在同一個事務中完成,但很少有真正的需要,最終的一致性通常適用於搜索引擎)。
如您所說,您可以安排定期更新(類似於我在Solr中爲DIH做出的貢獻)。
感謝您的回覆。你的項目DIH很不錯! –
您可以使用Elastic Search提供並使用JDBC riverplugin或使用events on your Entities via JPA手動觸發更新。
你最終做了什麼? –