2017-06-20 114 views
0

在一個負載平衡的環境中,我有獨立的Java線程(爲了簡單起見,基本上通過一個彈簧引導jar讓我們稱之爲Project 1),它讀取一些元數據並更新某個位置的lucene索引。Lucene索引複製

然後有一個實際的Web應用程序(項目2),通過它我想通過這些指標來查詢(其另一個項目1創造),但是索引文件,有哪些可用的選項:

  1. 複製索引文件定期到Web應用程序的lucene,這是不可能的,因爲我們可能不得不重新啓動我信任的應用程序。
  2. 將兩個項目作爲一個包保存在戰爭中,因此lucene的單個實例可用於兩者。
  3. 其他複製策略?

以上任何幫助將不勝感激。 Best, - Vaibhav

+0

爲什麼兩個應用程序無法共享一個位置?任何具體原因? –

+0

由於它們都在各自的上下文中運行,因此只有其中一個可以在某個時間點訪問索引文件,下面基本上是由quora中的某個用戶引用的類似問題:https://www.quora.com/How -can-two-applications-share-the-index-built-by-Lucene – vaibhav

+0

我不理解上下文部分,對我來說它只是一個磁盤上的外部目錄,所以爲什麼兩個應用程序不能共享呢?它只是在目錄包含lucene數據的情況下,但綁定到一個應用程序的目錄對我來說是沒有意義的。這兩個應用程序是寫入還是隻寫入一個? –

回答

1

這真的取決於您的應用程序的非功能需求以及由它們驅動的任何特定架構決策。

但這裏的一些想法:

  • 複製像folderA到FolderB中的索引聽起來像一個非常糟糕的主意。特別是如果兩個應用都必須一直運行的話。

  • 您不希望這兩個應用程序之間存在直接依賴關係,因此您必須構建自己的lucene組件,該組件提供您所需的API功能。

  • 我會建議用適當的API構建一個組件。這個組件使用lucene作爲庫,並且在像多個系統或者實例一樣喜歡使用這個組件的情況下,我會建議一個很好的對Lucene的NRT(近實時)實現。