【问题标题】:Store Images to display in SOLR search results存储图像以显示在 SOLR 搜索结果中
【发布时间】:2013-05-29 00:49:52
【问题描述】:

我已经建立了一个 SOLR 索引,其中包含我想要渲染图像的图像缩略图 URL 以及搜索结果。问题是这些图像可能会达到数百万,我认为将图像作为二进制数据存储在索引中会使索引变得庞大。

我正在寻求有关如何在从 URL 渲染这些图像后有效地存储这些图像的指导,我应该使用纯文件系统并让它们由 tomcat 渲染,还是应该使用像 Apache Jackrabbit 这样的 JCR 存储库?

任何指导将不胜感激。

谢谢。

【问题讨论】:

  • Solr 中的元数据(如果您需要对其进行搜索)。将图像本身存储在 1. S3 (+ cloudfront) 或 2. Mongo Gridfs 上。

标签: image apache solr indexing jackrabbit


【解决方案1】:

在最终决定如何保存图像之前,我会评估有效的要求。

您需要版本控制吗? 您打算只搅拌图像或其他元数据吗? 你对水平缩放有什么要求吗? 您需要任何图像处理或缩放吗? 您需要访问图像元数据吗? 您是否需要额外的工具来管理图像? 您愿意花时间学习其他技术吗?

存储在文件系统上并通过图像 sppoler 实现使其可用是持久化图像的最简单方法。 但是,如果您确定了上面提到的一些要求(对于内容存储库或大坝系统来说是典型的),那么最终将使用文件系统方法重新发明轮子。

另一种选择是使用一种内容存储库。像 Jackrabbit 这样的 JCR repo 或者它的商业实现 CRX 是一种选择。 Alfresco(支持 CMIS)将是另一个有效的。 上述两种存储库解决方案都支持版本控制、后处理(缩放...)、元数据提取和管理等功能。但这需要您学习一项可能很耗时的新技术。提到的两种存储库技术都可能变得复杂。 如果需要水平扩展,我会考虑商业支持的存储库实现(CRX 或 Alfresco Enterprise),因为社区版本缺少此功能。

就我个人而言,我真的会根据上述要求做出任何决定。 我与 Jackrabbit、CRX 和 Alfresco CE 和 EE 进行了广泛的合作,我个人会选择 Alfresco,因为我体验过它可以更好地处理大量数据。

【讨论】:

  • Thomas,感谢您的精彩回复,到目前为止,我不需要任何功能,例如版本控制、mata 数据提取等,缩放绝对是一个问题,随着数据的增长,我认为我需要水平缩放它。是否有任何指向使用 Tomcat 的简单池机制的指针。只是为了确保我在之前的评论中不够清楚,我想存储这些图像的缩略图中的图像,并且这些图像仅对给定的爬网窗口有效,这意味着我正在使用爬虫并且图像需要在下一次爬网会话期间被删除/更新。谢谢
【解决方案2】:

我不知道有什么图像池解决方案可以完全满足您的需求,但实施起来应该不难,除了重复的缩放操作可能会占用大量资源。

如果FS对你来说足够了,我会选择以下方法:

  • 将图像和缩略图分成两个位置。
  • 图像根文件夹将保留,缩略图文件夹为 临时的。
  • 为每次索引运行创建一个临时缩略图文件夹。
  • 该运行的所有缩略图都存储在该位置下,可缩放 可以通过 ImageMagick 来实现。
  • 然后可以轻松删除临时缩略图文件夹 下一次运行已完成。

如果您打算存储数百万张图像,请避免将所有文件放在同一目录中。浏览包含两个多个条目的平面层次结构将是一场噩梦。 通过反转当前日期时间(年/月/日/小时/分钟 ... 2013/06/01/08/45)更好地创建树结构。

这确保最后一个文件夹中的文件数量不会太大(Alfresco 使用相同的模式在 FS 上存储二进制对象,并且它已经证明可以很好地工作)。

【讨论】:

  • 再次感谢您的详细回复,我只需要维护缩略图,ImageMagick 指针对缩小图像非常有帮助。我将研究 Alfresco 作为存储库,但我希望一个更简单的解决方案,例如单独使用 Tomcat,但是我认为扩展将是一个问题,如果我必须学习一项新技术,即 Alfresco,就这样吧。谢谢。
猜你喜欢
  • 2011-05-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多