Хранить изображения для отображения в результатах поиска SOLR
Я создал индекс SOLR, в котором есть URL-адрес миниатюр изображений, которые я хочу отображать вместе с результатами поиска. Проблема в том, что эти изображения могут исчисляться миллионами, и я думаю, что хранение изображений в индексе в виде двоичных данных сделает индекс огромным.
Я ищу рекомендации о том, как эффективно хранить эти изображения после их рендеринга по URL-адресам, должен ли я использовать простую файловую систему и отрисовывать их с помощью tomcat, или мне следует использовать репозиторий JCR, такой как Apache Jackrabbit?
Любое руководство будет с благодарностью.
Благодарю вас.
2 ответа
Я оценил бы эффективные требования прежде, чем наконец решить, как сохранить изображения.
Вам требуется версия? Планируете ли вы чередовать изображения или дополнительные метаданные? Есть ли у вас какие-либо требования к горизонтальному масштабированию? Вам требуется обработка или масштабирование изображения? Вам нужен доступ к метаданным изображения? Вам нужны дополнительные инструменты для управления изображениями? Готовы ли вы потратить время на изучение дополнительных технологий?
Хранение в файловой системе и обеспечение их доступности с помощью реализации графического спплера - это самый простой способ сохранить ваши изображения. Но если вы определили некоторые из вышеупомянутых требований (которые типичны для репозитория контента или системы плотины), то в конечном итоге изобрели колесо с подходом файловой системы.
Другим вариантом является использование своего рода репозитория контента. Репозиторий JCR, такой как, например, Jackrabbit, или его коммерческая реализация CRX - это один из вариантов. Alfresco (поддерживает CMIS) будет еще одним действительным. Такие функции, как управление версиями, постобработка (масштабирование...), извлечение метаданных и управление ими, поддерживаются обоими упомянутыми решениями хранилища. Но это требует от вас изучения новой технологии, которая может занять много времени. Обе упомянутые технологии хранилища могут стать сложными. Если требуется горизонтальное масштабирование, я бы рассмотрел коммерчески поддерживаемые реализации репозитория (CRX или Alfresco Enterprise), потому что в выпусках сообщества отсутствует эта функциональность.
Лично я действительно буду зависеть от любого решения от вышеупомянутых требований. Я интенсивно работал с Jackrabbit, CRX и Alfresco CE и EE, и лично я бы пошел на Alfresco, поскольку я испытал его, чтобы лучше масштабировать с большими объемами данных.
Мне не известно о решении для пула изображений, которое точно соответствует вашим потребностям, но не должно быть сложным в его реализации, за исключением того факта, что повторяющиеся операции масштабирования могут быть очень ресурсоемкими.
Я бы пошел на следующий подход, если вам достаточно FS:
- Разделите изображения и миниатюры в двух местах.
- Корневая папка с изображениями останется, папка с миниатюрами будет временной.
- Создайте временную папку с миниатюрами для каждого запуска индексации.
- Все миниатюры для этого прогона хранятся в этом месте, масштабирование может быть достигнуто с помощью, например, ImageMagick.
- Временную папку с миниатюрами можно легко удалить, как только будет завершен следующий запуск.
Если вы планируете хранить миллионы изображений, не размещайте все файлы в одном каталоге. Просмотр плоских иерархий с двумя многочисленными записями станет кошмаром. Лучше создать древовидную структуру, т. Е. Инвертировать текущую дату и время (год / месяц / день / час / минута... 2013/06/01/08/45).
Это гарантирует, что количество файлов в последней папке не слишком велико (Alfresco использует тот же шаблон для хранения бинарных объектов на ФС, и он отлично работает).