2012-08-23 115 views
2

我想利用Lucene在我的應用程序中開發全文搜索,這需要根據我的mysql數據庫建立索引。我想知道如何保持這些索引與數據庫同步? 我想出了方法: 1)緊緊地在業務邏輯中添加額外的代碼來更新搜索索引。 2)運行一個單獨的任務來定期重建索引。如何保持Lucene索引與Mysql數據庫同步?

你有沒有其他方法?你認爲最好的方法是什麼? 任何意見將不勝感激,在此先感謝!

+0

你最終做了什麼? –

回答

0

您可以在MySQL中設置觸發器來更新所有插入/更新/刪除文檔的更改文檔。另外,你可以在應用程序中設置一個Filter(javax.servlet spec)來攔截服務器請求,並在它們到達數據庫之前將它們推送到你的索引(它甚至可以在同一個事務中完成,但很少有真正的需要,最終的一致性通常適用於搜索引擎)。

如您所說,您可以安排定期更新(類似於我在Solr中爲DIH做出的貢獻)。

+0

感謝您的回覆。你的項目DIH很不錯! –

2

如果您使用Hibernate,請查看Hibernate search項目。它應該涵蓋很多樣板。

+0

是的,現在我正在使用它,工作正常。 –