我們正在使用 Hibernate Search(Lucene 引擎)來啟用對文本的模糊搜索,我們存儲在 SQL Server 數據庫中并由用 Java 8 編寫的搜索服務使用的一些數據。搜索的數據源是一個具有中等編輯/更新頻率的表. 我們需要的是,對于重建索引時所做的任何更改,我們希望確保搜索功能仍在運行且可訪問,而不是被正在構建的索引過程鎖定。簡而言之,如何在構建新索引時臨時使用現有索引并在完成時替換它。
1 回答

Qyouu
TA貢獻1786條經驗 獲得超11個贊
不是您問題的答案,但無論如何都可以幫助您:根據我在您的評論中的理解,您實際上并不需要完全重建索引,您只需要從與執行該應用程序的應用程序不同的位置獲取更新事件搜索查詢。
如果您的“更新”應用程序使用 Hibernate ORM,您可以在不完全重建索引的情況下解決問題:在“更新”應用程序中自動增量地構建索引(在“自動索引”模式下使用 Hibernate 搜索,無需進行任何查詢),并確保索引可用于“搜索”應用程序。
后者可以通過以下任一方式實現:
通過使用實驗性Elasticsearch 集成并將兩個應用程序連接到同一個集群:一個將更新它,另一個將使用它進行搜索。
或者通過使用 Lucene 與
filesystem-master
/filesystem-slave
目錄提供程序的集成,這將允許您定期(并且無需停機)將索引從“更新”應用程序(主)復制到“搜索”應用程序(從)。請注意,如果多個應用程序更新索引,您將需要使用JMS 或 JGroups 后端將所有索引更新重定向到主節點并避免沖突。請注意,配置 JMS 或 JGroups 不會很明顯。
添加回答
舉報
0/150
提交
取消