Статьи

Поисковые системы для сайта на PHP

Поисковые системы, написанные на PHP
 
Если вы собираетесь установить локальную поисковую систему и пишите свой сайт на PHP, то вы можете выбрать среди нескольких наиболее популярных систем, созданных на PHP. Мы изучили наиболее известные системы, протестировали их и составили сравнительную таблицу. Вот какие результаты мы получили.
 
iSearch (http://www.isearchthenet.com/isearch/) предлагает большой выбор опций, удовлетворяющих нужды практически любого сайта; однако основные функции в нем зашифрованы и изменить их довольно трудно. Кроме того, как выяснилось во время тестирования, примерно каждые 20 минут робот будет входить в бесконечный цикл или наталкиваться на недоступную страницу, что делает обновление по крону крайне ненадежным.
 
MnogoSearch (http://www.mnogosearch.org/win.html) – довольно мощная и универсальная система, но в отличие от большинства своих конкурентов, она нуждается в компиляции перед использованием. Она совместима с любой крупной базой данных, включая SQLite, и распространяется с фронтендом, написанном на PHP, C или Perl. У этой системы есть командная строка для внесения изменений в процесс индексирования после его конфигурации; эта опция также важна и для автоматизации всего процесса. Система предлагает огромный выбор функций, включая поиск на вашем сайте, поиск по FTP архивам, поиск по статьям новостей и много другое.
 
PHPDig (http://www.phpdig.net/) использует базу данных MySQL и составляет глоссарий слов, которые встречаются на индексируемой странице. Результаты поиска располагаются в соответствии с количеством ключевых слов, найденных на странице. Хотя известность системы PHPDig и открытый код предполагают нечто большее, эта система далеко не самая лучшая из доступных решений. Скорость индексации достаточно мала, особенно по сравнению с MnogoSearch или RiSearch. Она перенасыщена всевозможными функциями и плагинами для любого формата данных и имеет встроенную подпрограмму для планирования индексации.
 
RiSearch (http://risearch.org/) – очень мощный и быстрый поисковый скрипт, специально разработанный для работы с сотнями мегабайт текстовой информации. В ней не используются библиотеки или базы данных, а только код Perl с фронтендом, написанном на PHP. Для бэкенда, основанном на файловой структуре, RiSearch на удивление быстро выполняет поиск. Однако это сказывается на релевантности результатов поиска, которые несколько хуже, чем в других системах. Поэтому данную систему лучше использовать для поиска уникальных фраз, таких как названия видов, нежели для поиска каких-либо понятий.
 
Sphider (http://www.cs.ioc.ee/Eando/sphider/) представляет собой PHP код, который использует MySQL для индексирования страниц. Эта система может работать с сайтами, насчитывающими до 20 000 страниц контента. Она также хорошо проводит анализ сайта, например, находит битые ссылки и собирает статистику по сайту. У нее очень удобный бэкенд и эффективный алгоритм поиска, но методы индексирования функционируют не так хорошо.
 
Sphinx (http://www.sphinxsearch.com/) – это быстрая полнотекстовая система поиска, идеально подходящая для поиска по контенту,который хранится в базе данных. Она использует свой собственный демон (который вы компилируете) и не имеет каких-либо встроенных роботов. К ее основным характеристикам можно отнести высокую
производительность, хорошую масштабируемость и высокое качество поиска, совершенствованную сортировку, фильтрацию и группировку.
 
TSEP (http://www.tsep.info/) вызывает большую задержку при работе робота, если индексируемые данные занимают большой объем. На одном из серверов мы столкнулись с проблемой таймаута (time-out/keep-alive of 8/15), которую в принципе можно обойти, если поместить в верхней части файла indexer.php строку ignore_user_abort().
 
 
SiteSearch (http://php.warpedweb.net/sitesearch/) – система поиска, которая использует базу данных, состоящую из текстовых файлов, для индексирования информации на сайте. Она включает в себя несколько полезных функций, таких как индексацию по мета-тегам и поиск нескольких слов одновременно. Она также содержит несколько дополнений, включая мультиязычность и поддержку текстовых баз данных.
 
Simple Web Search (http://webaugur.com/wares/sws.html) представляет собой скрипт, который выполняет поиск по индексу SWISH-E. Для работы с этой системой необходимо установить SWISH-E 1.x или 2.x и PHP 3.0.8 (или выше), а также веб-сервер, поддерживающий PHP 3.

IndexServer (http://www.blueshoes.org/en/plugins/indexserver/) – полезный плагин,  позволяющий выполнять большое количество разнообразных задач. Индексирование сайта позволит вам впоследствии составлять запросы к итоговому индексу.
 
Xapian (http://www.xapian.org/) – это только инструмент индексирования, однако производитель также предлагает систему поиска по сайтам, включающую в себя приложение Omega, которое выглядит вполне многообещающим и имеет ряд интересных опций. Xapian использует SWIG для PHP, поэтому сам робот не совместим с PHP 5. Здесь стоит упомянуть
 
BeebleX (http://beeblex.com/) – поисковую систему, которая использует расширение Xapian, совместимое с PHP 5. Для получения более подробной информации, посетите сайт Marco Tabini`s thoughts on BeebleX (http://blogs.phparch.com/mt/?p=60).
 
 
Рекомендации
Идеальной поисковой системы не существует, но общее впечатление было таково, что Sphider и MnogoSearch являются лучшими кандидатами в этом списке. В целом, Sphider возвращает наиболее точные результаты, а MnogoSearch гораздо легче установить.
 
Sphinx – это относительно новая поисковая система, хотя выглядит многообещающе. И хотя Sphinx не так широко известен и применялся лишь для нескольких реальных сайтов, стоит обратить на него внимание, особенно, если вам не нужен поисковый робот. Xapian – довольно мощная система с поддержкой многих языков программирования, но установить ее для PHP нам показалось достаточно сложным.
 
Заключение
Если вы хотите получить больше информации о поисковых системах, вам стоит посетить нижеприведенные сайты; на них вы найдете описания различных систем поиска, обзоры, новости, путеводители, советы по использованию и многое другое:
 
• http://www.searchtools.com
• http://www.searchengines.com
• http://www.searchengineguide.com
• http://www.searchengineshowdown.com
• http://searchenginewatch.com

=====
Автор: Michael Douma
Перевод: Екатерина Шадрина