2013-06-02 61 views
1

我已經構建了一個SOLR索引,其中包含圖像縮略圖,用於顯示圖像以及搜索結果。問題是這些圖像可能會達到數百萬,我認爲將圖像作爲二進制數據存儲在索引中會使索引變得非常龐大。存儲圖像以顯示在SOLR搜索結果中

我在尋求關於如何在從URL渲染這些圖像之後高效地存儲這些圖像的指導,我應該使用純文件系統並使它們由tomcat呈現,還是應該使用JCR存儲庫(如Apache Jackrabbit)?

任何指導將不勝感激。

謝謝。

+0

Solr中的元數據如果您需要搜索它。將圖像本身存儲在1. S3(+ cloudfront)或2. Mongo Gridfs上。 –

回答

1

我會在最終決定如何保留圖像之前評估有效的需求。

你需要版本控制嗎? 您是否打算只提供圖像或其他元數據? 你對水平縮放有什麼要求嗎? 你需要任何圖像處理或縮放嗎? 你需要訪問圖像元數據嗎? 是否需要額外的工具來管理圖像? 你是否願意花時間學習其他技術?

存儲在文件系統上並通過映像sppoler實現使它們可用是保持圖像最簡單的方法。 但是,如果您確定了上述某些要求(對於內容回購或大壩系統而言是典型的),那麼最終將會採用文件系統方法重新發明輪子。

另一種選擇是使用一種內容存儲庫。像例如Jackrabbit的JCR回​​購或其商業實施CRX是一種選擇。 Alfresco(支持CMIS)將是另一個有效的。 上述兩個存儲庫解決方案均支持版本控制,後處理(縮放...),元數據提取和管理等屬性。但是這需要你學習一種耗時的新技術。兩個提到的存儲庫技術都可能變得複雜。 如果需要橫向擴展,我會考慮商業支持的存儲庫實現(CRX或Alfresco Enterprise),因爲communty版本缺少這種功能。

我個人我真的會依賴於上述要求的任何決定。 我與Jackrabbit,CRX和Alfresco CE和EE廣泛合作,並親自參加Alfresco,因爲我經歷過它可以用更大量的數據進行擴展。

+1

托馬斯,感謝您的回覆,截至目前我不需要任何功能,如版本控制,數據提取等,縮放是一個絕對值得關注的問題,隨着數據的增長,我認爲我需要逐步擴展它。是否有指向使用Tomcat的簡單池機制的指針?只是爲了確定我之前的評論中我是否不夠清楚,我想從這些圖像的縮略圖中存儲圖像,並且這些圖像只對給定的抓取窗口才有效,這意味着我正在使用抓取工具,並且圖像需要在下一個抓取會話期間被刪除/更新。謝謝 – user1965449

0

我不知道一個完全符合您的需求的圖像池解決方案,但它不應該很難實現,除了重複縮放操作可能非常耗費資源的事實。

我會去下面的方法,如果FS是足以讓你:

  • 獨立的圖像和縮略圖到兩個位置。
  • 圖片根文件夾將保留,縮略圖文件夾爲 臨時。
  • 爲每個索引運行創建一個臨時縮略圖文件夾。
  • 該運行的所有縮略圖都存儲在該位置下,縮放 可以用ImageMagick實現。
  • 只要 下一次運行完成,臨時縮略圖文件夾可以很容易地被刪除。

如果您打算存儲數百萬張圖像,請避免將所有文件放在同一目錄中。瀏覽兩個很多條目的扁平層次將是一場噩夢。 通過顛倒當前日期時間(年/月/日/小時/分鐘... 2013/06/01/08/45)更好地創建樹結構。

這可以確保最後一個文件夾get中的文件數量不會太大(Alfresco在FS上使用相同的模式來存儲二進制對象,並且證明它可以很好地工作)。

+0

再次感謝您的詳細回覆,我只需要維護縮略圖,ImageMagick指針對縮小圖像真的很有幫助。我將研究Alfresco作爲存儲庫,但我希望獲得更簡單的解決方案,如使用Tomcat本身,但我認爲擴展將是一個問題,如果我必須學習一種新技術,即Alfresco,就這樣吧。謝謝。 – user1965449