Социальная сеть LinkedIn анонсировала открытие кода ряда технологий, полученных после покупки компании IndexTank, занимающейся развитием облачного сервиса, берущего на себя заботу по организации поиска на web-сайтах. После открытия кода появилась возможность создания аналогичных сервисов на своих мощностях. В частности, под лицензией Apache открыт код поискового движка indextank-engine (IndexEngine), используемого для индексации данных, и пакета indextank-service, в который входят компоненты для организации поискового сервиса. Из ресурсов, использующих поисковые технологии IndexTank, можно отметить Reddit.
Основные компоненты IndexTank:
- IndexEngine - написанная на языке Java система поиска и индексации полнотекстовых данных, работающая в режиме реального времени и нацеленная на разделение информации о релевантности от содержимого индексируемых документов (в социальных сетях релевантность больше зависит от реакции пользователей, которая проявляется в виде рейтингов, обмена ссылками и различных голосований, "+1", "like" и т.п.). Из дополнительных возможностей, поддерживаемых движком отмечаются средства для вывода элементов в топ (например, для показа контекстной рекламы), разделение контента на категории и поиск по категориям, вывод контекстных подсказок, подключение собственных функций сортировки, поиск с учетом местоположения пользователя, голосования, рейтинг, комментарии, автодополнение вводимых запросов и предложения релевантных похожих запросов.
- REST JSON API для взаимодействия внешних приложений (сайтов) с поисковым сервисом. Реализация API написана на языке Python с использованием фреймворка Django. API позволяет организовать работу многопользовательского сервиса, в котором для каждого пользователя поддерживается свой набор поисковых индексов. Доступны функции аутентификации пользователей и взаимодействия с IndexEngine, например, индексации данных, управления индексами, выполнение операций поиска в индексах. Клиентские библиотеки для поддержки API доступны для языков Java, Python, .NET, Ruby и PHP, реализация поддержки для других языков не представляет сложности, так как запросы можно отправлять через простой протокол, работающий поверх HTTP;
- Nebulizer - фреймворк для обеспечения работы на стороне сервера и управления многопользовательским поисковым сервисом, который может обеспечить работу с неограниченным числом поисковых индексов, развёрнутых поверх SaaS-систем (инфраструктура как сервис). Nebulizer позволяет создавать и обслуживать виртуальные окружения по мере необходимости, перемещая индексы при увеличении потребления ресурсов и заботясь об обеспечении максимальной эффективности обработки индексов;
- Backoffice - приложение на базе Django с реализацией административного web-интерфейса;
- Storefront - приложение на базе Django c реализацией интерфейса для регистрации новых пользователей сервиса и создания новых аккаунтов.
|