2012-01-30 76 views
3

我們有一種產品作爲我們組織內各產品團隊的參考數據的來源。數據已經存儲在我們公開的服務索引索引中,以便客戶訪問這些數據。有沒有辦法在一天內找到更新/編寫的文檔到索引索引

現在我們需要提供一種事件驅動機制,以便客戶端在服務器端得到通知。

雖然我知道使用Oracle coherence和solr等產品很容易實現,但它不適合用於此目的。但是現在我們不可能倒退並改變解決方案。

所以,爲了達到這個要求,我們已經公開了一個RESTFul服務,該服務返回特定索引中的所有文檔,並且客戶端應用程序繼續訪問這個響應式服務,以便獲得完整數據集的一定數量的迭代。

我知道這不是最好的方法,但我們有有限的選項可用,因爲我們不希望另一個數據存儲僅爲此。

作爲對這種方法的改進,我們希望我們公開另一個服務,該服務在特定的時間框架內將插入/更新/刪除操作返回給solr索引。例如/ companyIndex/itr/15,它在過去的15分鐘內對公司索引進行了修改。這將幫助客戶減少他們將要處理的數據量。一旦客戶端從索引中獲取完整的數據集,它們就可以在稍後處理增量更新,並以這種方式將客戶端數據集與主數據集同步。一些滯後依然存在,但這很好。

有沒有辦法使用solr/lucene本身來實現這一點? Solr是否維護可以暴露的審計線索?

儘管我們可以使用我們的數據加載圖層來保存這些信息,但是我們想知道是否可以使用solr提供的某些內容?

任何建議/意見?

回答

1

有幾種方法可以處理這個問題。 Lucene公開有關提交IndexDeletionPolicy(見IndexCommits)中的提交的信息,Solr使用它來爲自己的複製提供動力。您可以自己掛鉤複製,並檢索當前版本的索引以及哪些文件在此期間發生更改(請參閱HTTP API for replication)。

如果你想了解每個提交事件的更多細節,你必須深入一點,但我相信你可以直接鉤入Lucene來觀察事件(用同樣的方式Solr),然後通過RabbitMQ或其他消息隊列廣播它們以將信息展示給多個客戶端。

希望這會指出你在正確的方向!

+0

當然。我至少有一些想進一步挖掘的想法。謝謝! – Manish 2012-02-01 07:42:32

相關問題