Error message

User warning: The following theme is missing from the file system: responsive_green. For information about how to fix this, see the documentation page. in _drupal_trigger_error_with_delayed_logging() (line 1143 of /var/www/moscovie.com/includes/bootstrap.inc).

Эффективный поиск по сайту

Автор. Иван Никитин

К сожалению, большинство разработчиков недооценивают сложность этого решения и полагают, что поиск можно свести (упрощенно) к SQL запросу:
SELECT * FROM products WHERE title LIKE ‘%что-то%’ OR description LIKE ‘%что-то%’

Можно, конечно же, усложнить, добавить поиск по словам и их сочетаниям (меня так умиляет фраза, которую иногда встречаешь на сайтах: «Вы можете использовать AND, OR, NOT»

Реализация эффективного поиска

Во-первых, необходимо осознать, что хороший поиск – это далеко нетривиальная задача. Более того, можно сказать и так: сложность реализации хорошего поиска намного превосходит сложность реализации функционала всего сайта. Поэтому нужно сто раз подумать, прежде чем ставить перед собой такую задачу. Вы готовы взяться написать систему морфологического анализа, оценки релевантности документов, алгоритм ранжирования результатов? И самое главное, сколько человеко-часов и тысяч строк кода вы готовы положить на это?

Но мы, тем не менее, можем решить эту задачу! У нас есть, как минимум, три способа ее решения:

  1. Использование форм поисковых систем
  2. Использование доступных Веб-служб
  3. Использование сторонних решений

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

Использование форм поисковых систем

Итак, рисуем примерно такую форму:

value="www.specialist.ru" />

Тем не менее, этот способ можно настоятельно рекомендовать малобюджетным или некоммерческим сайтам, так как качество поиска намного перевешивает негативные стороны в виде контекстной рекламы.

Использование доступных Веб-служб

В этом способе мы попробуем отказаться от вывода чужих рекламных объявлений в результатах поиска. Многие поисковые системы предоставляют сервисы для осуществления автоматического поиска. Это и Яндекс.XML (http://xml.yandex.ru/), и службы Google и другие. Общий смысл заключается в том, что мы предоставляем свою форму поиска, которая передает запрос пользователя на наш сервер, который в свою очередь передает его поисковой системе. Получив результаты, наш сервер выводит их в любом дизайне, в любом виде на наш сайт. Пользователь даже не догадывается, что поиск осуществлялся какой-то внешней системой, так как он видит результаты в дизайне нашего сайта. Правда, у Яндекс.XML какая-то совершенно непонятная лицензионная система (требование параллельно выводить объявления Директа), а Google тихой сапой прикрыл подобный сервис примерно год назад, и сейчас предоставляет такой поиск только в совокупности с объявлениями AdSense, опять же, с контекстной рекламой.

Но и здесь можно найти выход. У Microsoft есть API для работы с поиском Live.com (http://dev.live.com/livesearch/), который (API – это «он»), позволяет реализовать подобную систему. Правда и этот API ограничивает количество запросов в день примерно на 1000 – 3000 запросов, но для средних сайтов этого хватает.

Реализовать такой поиск совершенно несложно, тем более Live Search API предусматривает SOAP вызовы XML Веб-сервиса, а это значит, что эти вызовы можно осуществить из любой платформы, и из любого средства разработки сайтов: PHP, ASP.Net и т.п.

Использование сторонних решений

Однако, у способа, использующего доступные Веб-службы, например Live Search API, есть два ощутимых недостатка:

  1. Невозможность оперативно управлять переиндексацией ресурса
  2. Невозможность индексации (и как следствие поиска) в закрытых разделах сайта

Первый недостаток обусловлен тем, что роботы поисковых систем сами устанавливают расписание обновления вашего сайта в индексе, и если, например, ваш сайт не отдает корректный заголовок ответа HTTP Last-Modified (а это болезнь 90% сайтов в Интернете!), то это время может быть значительным. То есть после появления новых материалов на вашем сайте могут пройти дни, а то и недели, прежде чем они появятся в результатах поиска.

Второй недостаток вообще фатален. Робот поисковика никак не сможет получить доступ в закрытые разделы вашего сайта (например, в закрытый форум, где требуется авторизация), и поэтому информация из закрытых разделов никогда не появится в результатах поиска. Можно, конечно же, извернуться и сделать обезличенную публикацию информации из закрытых разделов (например, выводить сообщения закрытого форму без информации о пользователях), но это пройдет далеко не всегда. Например, как быть с поиском в вашей корпоративной почте?

Здесь нам могут помочь сторонние поисковые системы, например, Яндекс.Сервер (http://company.yandex.ru/technology/products/yandex-server.xml) или корпоративный Microsoft Office SharePoint Server (http://office.microsoft.com/ru-ru/sharepointserver/FX100492001049.aspx). Второй мне известен куда лучше, чем сервер от Яндекса, и он обладает достаточно мощной поисковой системой, которую можно использовать, в том числе, и для поиска по вашему сайту.

Возможно, в одной из следующих статей мы также рассмотрим интеграцию Microsoft Office SharePoint Server 2007 с вашим сайтом для построения эффективной поисковой системы.

Категория: 
The code has been tested and works

Add new comment

Filtered HTML

  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Lines and paragraphs break automatically.

Plain text

  • No HTML tags allowed.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Lines and paragraphs break automatically.