Хобрук: Ваш путь к мастерству в программировании

Сканировать изображения и их метаданные с помощью nutch и индексировать их в solr

Я хочу создать поисковую систему на основе мини-изображений, которой я могу предоставить файл изображения, и она будет искать похожие изображения в solr. Я использую nutch для сканирования и индексации данных в solr. Я внес изменения в файлы конфигурации nutch, например:

  • Добавлено image/* в mimetype-filter.txt
  • Убраны расширения изображений из suffix-urlfilter.txt - чтобы не пропускать

Я также добавил поля в solr schema.xml -

<field name="name" type="string" indexed="true" stored="true" />
<field name="iso" type="string" indexed="true" stored="true" multiValued="true" />
<field name="iso_string" type="string" indexed="true" stored="true" multiValued="true" />
<field name="aperture" type="double" indexed="true" stored="true" />
<field name="exposure" type="string" indexed="true" stored="true" />
<field name="exposure_time" type="double" indexed="true" stored="true" />
<field name="focal" type="string" indexed="true" stored="true" />
<field name="focal_35" type="string" indexed="true" stored="true" />
<dynamicField name="ignored_*" type="string" indexed="false" stored="false" multiValued="true" />

Но когда я сканирую, нет данных, которые индексируются в solr. Я не могу найти какую-либо документацию/учебник по этому поводу. Я также просмотрел несколько сообщений в stackoverflow для сканирования изображений с помощью nutch. Но я не нашел их полезными.

Может кто-нибудь, пожалуйста, направьте меня в правильном направлении относительно того, как действовать? Заранее спасибо.



Ответы:


1

На этот вопрос нет простого/краткого ответа, синтаксический анализ изображений — сложная задача, даже без участия краулинга. Вдобавок к тому, что вы уже сделали, вам нужно сначала включить плагин parse-tika (parse-html работает только с HTML-документами). Apache Tika может извлекать некоторые метаданные об изображениях.

Вам также необходимо включить плагин mimetype-filter (это не только редактирование файла конфигурации, но и включение в файле nutch-site.xml). После того, как эти настройки будут выполнены, вы должны попробовать инструмент bin/nutch parsechecker <URL>, чтобы протестировать URL-адрес, содержащий некоторые изображения, и посмотреть, сможете ли вы найти URL-адреса изображений в разделе Outlinks. Кроме того, проверьте запуск средства проверки синтаксического анализа по URL-адресу изображения, чтобы увидеть, какие метаданные извлекает средство проверки синтаксического анализа. После этого запустите инструмент bin/nutch indexchecker для обоих URL-адресов и проверьте, какие поля он собирается индексировать в Solr, и соответствующим образом создайте их в своей схеме. Имейте в виду, что Tika может извлекать разные метаданные для каждого формата.

09.04.2019
  • Я сделал то же самое, что вы упомянули. Мое требование - получить результаты (текст и изображения) на основе искомого ключевого слова. Текстовый поиск работает очень хорошо. Но на этапе синтаксического анализа изображений (bin/nutch parsechecker ‹IMG_URL›) имя изображения не указано в метаданных. У вас есть какие-либо предложения? 15.06.2021
  • У вас есть какие-либо предложения? 15.06.2021
  • Я предполагаю, что под именем вы имеете в виду имя файла изображения, верно? Вы случайно не используете Solr? Если да, вы можете извлечь имя файла из уже существующего URL-адреса (и отправленного в Solr). В этом случае вы можете скопировать URL-адрес в другое поле (например, filename) и использовать solr.RegexReplaceProcessorFactory (в новом поле), чтобы извлечь имя файла из URL-адреса. 17.06.2021
  • это сработало .. Я скопировал то же самое и извлек имя изображения в новое поле, используя solr.RegexReplaceProcessorFactory Но я боюсь, что новое содержимое поля не используется для поиска. Я не получаю результатов от них. Есть ли у вас какие-либо идеи.? 22.06.2021
  • Это действительно больше зависит от вашей конфигурации Solr и от того, какой анализатор запросов вы используете. Например, если вы используете или можете использовать анализатор запросов DisMax, вы можете использовать параметр qf (см. solr.apache.org/guide/8_0/). Другой вариант - иметь дополнительное поле для поиска, использовать copyField в вашей схеме, чтобы скопировать из других полей в этот набор текстовых полей и определить его как поле поиска по умолчанию (параметр df). Вы также можете изменить свой запрос, например content:bla OR filename:bla. 22.06.2021
  • Да сработало .. Спасибо :D 24.06.2021
  • Новые материалы

    Мой процесс подачи заявки в Школе программного обеспечения и дизайна Тьюринга
    Мой последний пост на Medium был в конце августа, и в нем я пообещал написать еще раз, рассказывая историю моего процесса подачи заявки в Школу программного обеспечения и дизайна Тьюринга ...

    Генерация ваших собственных удивительных QR-кодов с использованием Python
    QR-код (код быстрого ответа) — это разновидность матричных штрих-кодов (или двумерных штрих-кодов), изобретенных в 1994 году японской автомобильной компанией Denso Wave . Штрих-код —..

    Прогресс в технологии Трансформеров часть 3
    Многомасштабный управляющий сигнальный преобразователь для бесфазного синтеза движения (arXiv) Автор: Линтао Ван , Кун Ху , Лей Бай , Юй Дин , Ваньли Оуян , Чжиюн Ван . Аннотация:..

    Представляем поддержку компонентов Vue.js. Мгновенный HMR и многое другое.
    Хотя у FuseBox уже был плагин Vue, он был базовым и не имел многих функций, которые делали работу с Vue.js такой приятной. Однако с этим выпуском мы рады сообщить, что в FuseBox..

    Приключения в Javascript, часть 1
    Я продолжаю думать о том, чтобы писать больше, но чем больше я думаю об этом, тем меньше я это делаю. Итак, сегодня я перестал думать и начал писать. Отсюда можно только спускаться… В..

    Понимание дженериков в TypeScript: подробное руководство
    Введение TypeScript, строго типизированный надмножество JavaScript, хорошо известен своей способностью улучшать масштабируемость, удобочитаемость и ремонтопригодность приложений. Одной из..

    Учебные заметки JavaScript Object Oriented Labs
    Вот моя седьмая неделя обучения программированию. После ruby ​​и его фреймворка rails я начал изучать самый популярный язык интерфейса — javascript. В отличие от ruby, javascript — это более..