Поскольку Google прекращает поддержку GSA и GSS, мы ищем альтернативы для наших клиентов. Мы выбрали набор инструментов с открытым исходным кодом для сканирования, индексации и поиска в Интернете. Эта установка поддерживает асинхронные страницы JavaScript, многоязычные сайты, а также форматы микроданных.

Цели

Нашей основной целью было заменить Google GSA / GSS на систему равенства, которая должна поддерживать следующее:

  • Анализировать асинхронные страницы JavaScript
  • Поддержка многоязычных сайтов и возможность ограничить поиск заданным языком
  • Обеспечить полнотекстовый поиск
  • Анализировать метаданные и микроформаты, такие как аннотации JSON-LD и schema.org.

Процесс

Чтобы заменить поиск Google, нам в основном нужны два процесса:

  1. Веб-сканер для сканирования наших страниц и синтаксического анализа сайтов в полуструктуру.
  2. Поисковая система или база данных, в которой хранятся проанализированные данные и разрешается полнотекстовый поиск.

Поскольку у нас уже есть обширные знания о поисковой системе Elasticsearch, которая поддерживает полнотекстовый поиск, предложения и рекомендации Вы имели в виду, нам нужен был только способ поместить данные в ее индекс.

Веб-сканер

Существует несколько поисковых роботов, и Александр Педченко провел обширное сравнение ведущих поисковых роботов. В нашем процессе мы оценили Apache Nutch, bubing, scrappy, Heritrix и Lucidworks Fusion.

Время от времени мы посвящаем свое время в умном исследованию новых технологий в так называемом хакдей. На этой неделе мы взяли один выходной день из нашей повседневной работы и воспользовались возможностью, чтобы сосредоточиться на интеграции Apache Nutch и Elasticsearch, чтобы обеспечить эквивалентную замену Google Search. Мы выбрали Apache Nutch в основном из-за его расширяемости и активного сообщества.

Выводы

Мы смогли настроить Nutch 1.x и Elasticsearch 5.4 для совместной работы, а также смогли достичь всех наших целей. Поэтому мы уверены, что получим равноценную замену Google GSA и GSS.

Apache Nutch имеет обширный список подключаемых модулей (хотя многие из них не имеют документации), которые можно настроить для выполнения большей части тяжелой работы по синтаксическому анализу просканированных документов.

Мы использовали комбинацию плагинов для индексации и анализа метаданных и различения многоязычных сайтов.

Добавление PhantomJS в качестве браузера без головы наделило Apache Nutch возможностью выполнять и анализировать содержимое асинхронных страниц JavaScript.

Подводя итог, мы смогли:

  • Установите Apache Nutch 1.13 и
  • Индексируйте результаты сканирования в Elasticsearch 5.4
  • Примените полнотекстовый поиск и «Возможно, вы имели в виду…?» - предложения на Elasticsearch
  • Различать многоязычные сайты по индексированию и поиску
  • Выполнять и анализировать JavaScript с помощью PhantomJS
  • Анализировать метаданные и микроданные

Взносы

Во время нашего Hackday мы тесно работали с исходным кодом Apache Nutch, а также имели возможность внести некоторые улучшения в этот замечательный набор инструментов с открытым исходным кодом.

Мы опубликовали все наши ресурсы и материалы, которые использовали для нашего Hackday. Вы можете найти их здесь:

Благодарим Морено Фельтшера и Доминик Вирц.

Благодарим вас за интерес к поиску и сканированию Интернета! Мы рады поделиться с вами нашими мыслями о будущем - подпишитесь на рассылку новостей. Также мы хотели бы услышать ваше мнение и отзывы о нашем подходе в разделе комментариев!