Любой разработчик сталкивается с задачей реализовать поиск в веб-приложении. Для каких-то случаев подойдут и простые решения. Но чем сложнее структура контента, тем больше потребность в сложном поиске. Какие есть поисковые проекты, пригодные для применения в реальных приложениях?
Под поисковым сервером (“поисковик”) здесь понимается программное решение, которое ведет свою базу документов, по которых происходит поиск. Поисковик предоставляет возможность добавлять, удалять, обновлять документы в базе. Этот процесс индексирования может быть реализован отдельным компонентом или же сервером.
Другой компонент принимает запрос и производит выборку данных, соответствующих запросу. Он может ранжировать документы по степени соответствия поисковому запросу. Эти важные системы поисковика могут быть реализованы как библиотека или быть самостоятельными серверами с доступом через прикладные протоколы.
Отдельно выделяется модуль реализации веб-поиска. В поисковом сервере может иметься возможность получать страницы веб-сайтов по НТТР и заносить в поисковый индекс. Такой модуль называется “пауком”.
С ним поисковый сервер становится похож на Google или Yandex. С его помощью можно реализовать поисковик по каким-то сайтам, например, по тематическим. Среди бесплатных проектов присутствует такой сервер, реализующий веб-поисковик. Интересно?
Поисковый движок Xapian выгодно отличается от конкурентов наличием “живого” индекса, мощным языком запросов, проверкой орфографии, и поддержкой синонимов. В пакет движка входит Omega — так называется надстройка над библиотекой, готовая для использования в роли самостоятельного поисковика. Она отвечает за индексацию разных типов документов.
Xapian — достаточно качественный и хороший продукт, однако он менее распространен и гибок, чем Lucene или Sphinx. Если необходимо встроить модуль поиска в какое-то приложение, то лучше поискать готовые порты к поисковой библиотеке Lucene для вашего языка программирования. Они есть для всех распространенных ЯП, хотя могут и не реализовывать всех возможностей оригинала на Java.
А для приложений, написанных на С++ с дополнительными требованиями по широким возможностям языка запросов, Xapian будет самым лучшим выбором. Однако он требует модификации и ручной доводки для встраивания в код вашего приложения или при использовании его в качестве отдельного поискового сервера.
|