Поиск по сайту геоКоролёв является одной из ключевых особенностей проекта. Поиском на геоКоролёв пользуется более трети всех посетителей сайта. Поэтому поиск является очень важной составляющей и к его разработке и обслуживанию нужно подходить особенно тщательно – об этом и пойдёт речь в данном материале.
Кроме того, поиск на локальных сайтах очень сильно отличается от того поиска, который мы привыкли видеть на Яндексе или Google. А так как результаты поиска ещё и привязаны к карте – это ещё более увеличивает сложность и привносит дополнительные особенности.
Версия поискового механизма, работающего сейчас на геоКоролёв, уже третья по счёту, начиная от момента запуска сайта в 2006 году. Для пользователей сайта все эти изменения прошли почти незамеченными, т.к. визуально страница результатов поиска практически не изменялась.
Единственная модификация в интерфейсе была произведена в первые месяцы работы проекта и заключалась она в следующем: в первоначальном варианте мы использовали галочку-переключатель для раздельного поиска адресов и текстовой информации, т.е. для того чтобы найти какой-то адрес, пользователь с помощью нажатия галочки должен был указать цель своего действия, но буквально через месяц, после того как мы проанализировали поведение пользователей, стало ясно, что большинство просто не видят этой галочки (хотя она была расположена непосредственно под строкой ввода запроса и имела достаточный размер, сравнимый с кнопкой "Найти"). После этого было принято решение модифицировать алгоритм таким образом, чтобы автоматически распознавать какого типа запрос вводит пользователь: адресный или полнотекстовый. Также мы пришли к выводу что нужно использовать совершенно разные алгоритмы для обработки этих двух типов поисковых запросов. Сейчас поисковый алгоритм на геоКоролёв обладает следующими возможностями:
- умеет распознавать тип запроса: адресный или полнотекстовый
- умеет распознавать дробные адреса, например: дом 29/12 по пр-ту Космонавтов/ул. Горького алгоритм знает что цифра 29 относится именно к проспекту Космонавтов
- умеет распознавать опечатки в запросах
- умеет использовать синонимы для расширения смысла запроса
Тема опечаток и ошибок в поисковых запросах заслуживает отдельного упоминания. Дело в том, что в каждой местности существует огромное количество уникальных названий, характерных именно для конкретной области, например: задавая запрос "пионерка", пользователь из г. Королёв подразумевает не члена молодёжной организации, а улицу Пионерская, что очень хорошо видно из контекста поисковых запросов, которые мы регулярно изучаем и анализируем.
Таким образом мы получили несколько сотен запросов, которые встречаются именно при поиске по Королёву – на нашем другом сайте, посвящённом городу Мытищи мы видим что значения слов могут быть совершенно другими. Исходя из этих особенностей мы пришли к необходимости создания специального словаря, который помогает расширить смысл запросов и показывать результаты поиска именно те, на которые рассчитывал пользователь. Этот словарь пришлось составлять вручную, анализируя сотни тысяч запросов, сделанных в геоКоролёв. По причине региональных особенностей мы не могли использовать стандартные словари русского языка, применяемые в больших поисковых машинах интернета. Также этот словарь должен был содержать часто встречаемые опечатки и орфографические ошибки. На сегодняшний день словарь содержит более 14000 слов объединённых в 1500 словоформ.
Работа по анализу поисковых запросов с целью пополнения словаря должна проводиться на регулярной основе, чтобы качество поиска оставалось на высоком уровне, но так как эта работа отнимает большое количество человеко-часов (более 200), мы можем проводить её не чаще одного раза в год. Кстати, по количеству всевозможных словоформ лидирует улица "Сакко и Ванцетти" – более 110 словоформ, например таких как: "Садко Иван Цетти", "Сако Вацети", "Саке Вануетти" …
Теперь немного об алгоритме ранжирования результатов поиска, т.е. о том каким образом происходит упорядочивание результатов на странице. Так как основным источником заработка и поддержки проекта является платное размещение рекламы, именно этот принцип и положен в основу ранжирования. Но коммерциализация не полностью определяет порядок результатов (хотя и является существенным фактором), также учитывается количество информации и её распределение.
Часто клиенты спрашивают на каком месте по определённому запросу в результатах поиска на сайте геоКоролёв будет расположена информация об их компании. Для того, чтобы это лучше понять, следует немного рассказать о структуре информации, представленной на сайте геоКоролёв. Единицей информации является объект, привязанный к карте и имеющий ограниченное количество свойств, таких как: название объекта, телефон, адрес, режим работы, краткое описание, расширенное описание, фотографии и т.д. Всего существует 3 типа объектов, разделённых по принципу количества информации – условно мы называем их так:
- "точка на карте"
- "значок на карте"
- "мини-сайт"
Соответственно сортировка в результатах поиска происходит в следующем порядке:
- оплаченный "мини-сайт"
- бесплатный "мини-сайт"
- оплаченный "значок на карте"
- бесплатный "значок на карте"
- "точка на карте"
Тестирование показывает, что в подавляющем большинстве случаев (поисковых запросов) этот алгоритм сортировки даёт релевантные результаты. Например, очевидно, что на оплаченном "мини-сайте" количество и актуальность информации намного выше, чем у бесплатного "значка на карте", а пользователя как правило интересует максимальное количество информации в ответ на заданный вопрос.
Конечно, в этой статье не раскрыто огромное количество очень мелких особенностей и хитростей из которых и складывается полная картина работы поискового алгоритма, но сделано это для того, чтобы дать начальное представление об этом механизме. Если у Вас возникли вопросы, касающиеся каких-то более тонких аспектов работы нашей технологии, пожалуйста задавайте вопросы в комментариях – мы обязательно на них ответим.
Комментариев нет:
Отправить комментарий