2010-08-23 137 views
1

我正在兩個不同的服務器上運行Web應用程序並進行負載平衡,並使用Zend_Search_Lucene來索引文檔。Zend_Search_Lucene,如何通過網絡共享索引存儲文件夾

現在我面臨着用戶通過服務器#1來存儲信息的索引問題,Zend_Search_Lucene只存儲索引服務器#1。

因此,一旦另一個用戶通過服務器#2來搜索並且搜索,只有服務器#2中的索引被檢索。

有什麼辦法可以共享一個索引存儲文件夾,以便兩臺服務器都可以訪問嗎? 或者有什麼方法可以將索引存儲在mysql數據庫中,而不是文件系統?

回答

2

好的請不要傷害我,因爲我不會給你一個確切的答案給你的問題,但給你一個選擇。

請不要使用zend,因爲它很慢。相信我。它只是一個糟糕的實現,必須爲每個搜索請求完全加載。只是做一些基準,你會注意到。

Lucene的確實支持分片(分配指標到多臺服務器和合並結果seperately牽強)

它也支持複製這將是一個更好的去爲你

所以來這裏的真正有用的部分:

退房solr在http://lucene.apache.org/solr/ 它的所有設置與示例安裝使用jetty包括在內。 你raelly不必做任何事情超過自定義字段,如果你不使用通配符域和使用java -jar start.jar

啓動它一旦服務器,我只是忘了它的默認端口上運行,你有一個inderface到你可以使用http post發送你的新文件。 你可以從你的每個應用程序服務器通過php來完成。 然後solr會索引它並提交更改,如果您包含提交標誌。

您可以使用http界面和solr查詢參數查詢您的索引。那麼你會得到一個整潔的json或xml formattet文檔。 如果遇到任何加載問題,則可以複製服務器。

但是,如果您使用zend執行此操作,則您的服務器將處理的請求數量是您要求的1000倍以上,因爲一切都已啓動並正在運行,lucene已加載,查詢可立即生效。

只是看看這個教程一步一步,你應該罰款: http://lucene.apache.org/solr/tutorial.html

如果你不喜歡這一切,仍要與Zend堅持:

數據庫是不可能的貝性質,但你可以寫一個包裝。但這是荒謬的。 在這種情況下最好的做法是建立一個網絡文件系統!

任何問題,讓我知道。

ps:當你遇到選擇時,建議使用dismax,在大多數情況下它的速度要快很多。

+0

Solr Java Lucene?我有一個應用程序當前使用PHP Lucene(Zend庫),並計劃更新到Java Lucene並使用Java橋接器。思考? – allnightgrocery 2010-08-23 17:00:32

+0

是它的100%java lucene。 jetty服務器作爲應用程序服務器(替代方案是tomcat或其他)。您可以立即下載並開始使用的示例,其中包括jetty作爲默認服務器,它由apache和頂級項目開發,並與lucene緊密協作。我重新設計了商業產品事實發現者的公司應用程序,我只能推薦它。它運行速度快,可靠作爲一種魅力,並且非常靈活,但也非常靈活和可定製。 – 2010-08-23 17:29:44