18 дек.
2010

Про поиск

Хороший поиск должен быть как хороший помощник: догадываться, что ищут, понимать с полуслова, а если ничего не нашлось, предлагать похожие варианты. На большинстве сайтов поиск — это обманка: вроде как он и есть, но пользоваться совершенно невозможно.

Какими же свойствами должен обладать хороший поиск?

Фильтровать, а не искать

Хороший поиск должен помогать избегать случаев, когда пользователь выбрал несовместимые критерии. Например, поиск на главной странице авто.ру устроен так, что выбрать сочетание критериев, при которых ничего не будет найдено довольно сложно, хотя и возможно. А тот же расширенный поиск предоставляет такие возможности, что пользователь, увлёкшись, может легко выбрать сочетание, при котором получит пустой результат. А этого надо всячески избегать.

Отсюда рождается концепция хорошего поиска. Пусть поиск налету фильтрует выдачу по мере выбора параметров пользователем. Зашли на расширенный поиск авто.ру — в выдаче весь каталог авто, начинаем выбирать параметры поиска. Модель: Шевроле — тут же выдача отфильтровалась, некоторые параметры стали недоступны. Нет у Шевроле моделей с кузовом кабриолет, значит и не надо искушать пользователя. Выбираем дальше: объём двигателя: 1,2 — стали недоступны модели «Каптива» и «Тахо», а также автоматическая трансмиссия. И так на каждое действие пользователя поиск откликается, подстраивая варианты поисковых параметров.

Пользователю всегда надо находить хоть что-нибудь.

Предлагать похожие результаты

Если же случилось так, что ничего не найдено, то необходимо предложить примерно похожие варианты. Например, искали Макбук-про 2,6 ГГц с объемом винчестера 500 ГБ, но есть только с объемом 320. Его надо показать, как неточно соответствующий запросу, но очень похожий. Вдруг пользователю некритичен объём памяти.

Иметь умную поисковую строку

Мне очень нравится, как работает поиск на Яндекс.авто. Поиск на этом сайте понимает запрос «красный фокус автомат 1,8» и это просто отлично. Лично мне проще одной строкой сформулировать, что я ищу, чем выбирать из списка параметров.

Уметь искать сразу всё и то, что нужно

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

Самое худшее, что можно в этом случае сделать — нарисовать два поиска: один ищет глобально по всем разделам, а второй ищет по тому, где сейчас находимся.

С моей точки зрения, оптимальное решение такое: если пользователь, находясь в каком-либо разделе, пытается воспользоваться поиском, то происходит фильтрация содержимого этой страницы на лету. А если нажать энтр, то пользователь перейдёт к странице результатов поиска по всем разделам.

Не придираться к словам

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

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

4 комментария

mickeru, 21 дек., 06:28

Со всем согласен кроме одного — «Уметь искать сразу всё и то, что нужно». Я думаю это не всегда будет работать, т.к. пользователь привык всегда жать Enter в поиске, просто машинально. Многие даже не смотрят на экран когда набирают запрос.

scvorec, 22 дек., 09:05

2mickeru: да, всем не угодишь. Но хороший интерфейс тот, который думает даже о том маленьком проценте пользователей, которые не смотрят на клавиатуру, когда набирают запрос и ждут подсказок.
Так что работать оно как раз будет так, как и задумано.

Настя Кизза, 4 апр., 08:15

Я сделала недавно на одном проекте аяксовый поиск в виде визарда - пользователь отвечает последовательно на несколько вопросов, в конце получает относительно короткий список товаров. На каждом шаге можно исправиться и получить уже совсем новый список. Варианты в нем выдаются из того, что есть в наличии.
Заказчик хотел сначала простую форму с полями, где есть все возможные характеристики и все возможные сочетания ТТХ (большинства из которых в наличии нет), но чисто на пробу сделали так - ему очень понравилось :)
В основном противники аякса кричат, что слишком большой траффик и огромное число бессмысленных запросов к базе. Но в итоге трафик получился даже меньше, чем был бы, фигачь мы все варианты в форму сразу. Запросы - прибавилось по одному на шаг, но с учетом того, что этих шагов не особо много, мы не сильно потеряли в производительности. Но выиграли в удобстве :)
По поводу похожести - вопрос спорный. По моему мнению, отфильтрованных вариантов должно быть мало. А в случае, когда ТТХ много (компьютеры, автомобили и т.д.), будет каша из похожих вариантов. Проще и легче для таких случаев предложить похожий критерий - типа "Не нашли с 300 гб? Вот зацените с 500", что-то похожее мы в том визарде и сделали.
Другой момент, чисто разработческий - без мощного семантического анализа (который есть у яндекса, например) поиск, который думает как человек, может легко и просто превратиться в набор костылей, весьма неустойчивых при изменениях. Оно, конечно, все для пользователя, но надо ориентироваться и на развитие проекта и на возможную доработку.

maksomaza, 25 сен., 05:17

Насчет системы сущностей («Самое худшее, что можно в этом случае сделать — нарисовать два поиска: один ищет глобально по всем разделам, а второй ищет по тому, где сейчас находимся»). Первое, что в голову пришло — Вконтакте. Не знаю, может быть, я не искушен в интерфейсах, но мне кажется там вполне удобно разнесены два поиска для разных сущностей. А решение Антона Раскин назвал обратной совместимостью. Хотя, хз... Я бы, наверное, быстро к такому поиску привык.

Ваш комментарий

Анонимный комментарий будет опубликован от имени Ашайакатля

Укажите ее, если хотите, чтобы никто не смог написать от вашего имени.

Комментарии не по существу, содержащие мат или оскорбляющие кого-либо будут удаляться.