Для посетителя любого сайта у поисковой подсистемы есть только одна простая функция – быстро находить именно то, что этот посетитель хочет найти в данный момент времени. Так что, говоря о возможностях и пользовательских характеристиках поиска, следует иметь ввиду, что для владельца e-commerce площадки все это важно только в том случае, если он понимает потребности своих посетителей и стремится настроить работу поисковой подсистемы именно таким образом, чтобы указанные выше «быстро» и «находить» не подвергались с их стороны сомнению. Но при этом, помня об интересах бизнеса, некоторые тонкости и особенности работы поисковой подсистемы могут настраиваться для решения совершенно конкретных маркетинговых задач.
В общих чертах возможности и характеристики подсистемы поиска интернет-магазина или торговой системы определяются тем, что за поисковая машина используется в качестве основы для построения поиска. Многие популярные функции в таком случае реализуются «из коробки» на основе базового функционала поисковой машины, а часть – за счет дополнительной разработки и настройки. Качественных поисковых машин на рынке совсем немного (Oracle Endeca Commerce и Apache Solr). И основная причина здесь в сложности и многообразии функций поиска, которые востребованы в современном окружении. Потребности электронной коммерции диктуют очень жесткие условия к релевантности выдачи и скорости работы поисковых алгоритмов, богатству функциональных возможностей поиска. Кустарная разработка просто не способна удовлетворить все эти требования. Разработчики поисковых машин (search engines) уже вложили и продолжают вкладывать огромные ресурсы в развитие своих продуктов и удовлетворение многочисленных требований пользователей. И именно сфера электронной коммерции является основным заказчиком и потребителем всех этих усовершенствований.
К типовым функциям и возможностям (группам функций и возможностей) подсистемы поиска можно отнести:
- Мультиязычность (Multilanguage) – поддержка множества разных языков для поисковых интерфейсов, индексов, словарей.
- Тезаурус (Thesaurus) – словари синонимов, синонимических выражений, гипонимов и пр., используемые для автоматического расширения поискового запроса.
- Фиксированные фразы – вариант синонимического выражения, который определяет эквивалентность некоторого набора ключевых слов заданной фразе или слову (например, "российская + федерация" ~ "Российская Федерация" ~ "Россия" ~ "РФ").
- Стемминг (Stemming) – расширение поискового запроса пользователя с учетом морфологии (выявления словоформ и составных слов). Различают стемминг на основе словарей и автоматических алгоритмов.
- Альтернативы (Did-You-Mean, DYM) – предложение (в том числе автоматическое применение) альтернативных параметров и ключевых слов в случае неудовлетворительных результатов поиска (например, если поиск по ключевому слову "world" выдает результат из двух позиций, то можно предположить, что пользователь хотел ввести слово "word" с результатом в 30 позиций и предложить ему эту альтернативу).
- Подсказки (Type-ahead, Autocomplete, Auto-suggest) – по мере набора пользователем текста поискового запроса ему можно автоматически показывать варианты популярных поисковых фраз или критериев поиска, выдающих значимый результат.
- Коррекция ошибок (Spelling Correction) – исправление (автоматическое или по подсказке) опечаток и синтаксических ошибок пользователя. Различают коррекцию на этапе "до" и "после" запроса.
- Пометки/выделение результатов (Snippets and Highlights) – автоматическое выделение (пометка цветом, шрифтом ...) ключевых слов (поисковых фраз) в контексте выдачи.
- Перенаправление (Landing Pages) – автоматическое перенаправление пользователя на заданные страницы сайта в случае использования конкретных поисковых запросов (например, открытие личного профиля пользователя при поиске по фразе "личный кабинет").
- Специальные символы (Special Characters) – задание режима обработки специальных знаков и символов (+-.,\/ ...) в составе поискового запроса.
- Метасимволы, символы-джокеры или символы подстановки (Wildcards) – символы, используемые в запросах для замены других символов или их последовательностей (например, "вело*" как эквивалент любых слов, начинающихся с "вело").
- Стоп-слова (Stop Words) – ключевые слова и фразы, автоматически исключаемые (игнорируемые) из запроса при поиске (например, распространенные предлоги "на", "в", "c" ...).
- Пространственный поиск (Spatial Search) – поиск с учетом расстояний и геграфических координат (например, поиск всех ресторанов на расстоянии не более 2 км. от заданной точки).
- Фасетный поиск (Faceted Search, Faceted Navigation, Faceted Browsing) – способ задания критериев поиска через последовательность шагов навигации и применения необходимых фильтров. Данный подход основывается на принципах фасетной классификации (Faceted Classification System), предполагающих, что каждый информационный блок представлен в виде пересечения ряда признаков/измерений (dimensions), называемых фасетной структурой. Таким образом, комбинируя фасетные признаки (фильтры) пользователь может синтезировать ограниченные наборы данных, постепенно сужая круг поиска. Полноценная реализация фасетного поиска опирается на тесную интеграцию подсистем поиска и навигации и по сути является продуктом их симбиоза.
- Ранжирование (сортировка) результатов поиска (Relevance Ranking) – группа функций и настроек, которые позволяют управлять порядком выдачи (сортировки) результатов поиска, их представлением с учетом как параметров самих найденных объектов, так и, например, параметров запроса (ключевых слов и т.п.). Сюда относятся: простая сортировака по каким-то параметрам (по цене, размеру и пр.), группировки, дедупликация, управляемое ранжирование и выделение (Sponsored Search, Negative/Positive Boosting, Best Bets, Query Elevation, Boost through function queries). С точки зрения маркетинга и обеспечения удобства поиска эти функции являются одними из важнейших, и их качество во многом определяет качество всей поисковой системы.
- Каскадный или вложенный поиск (Cascading Search) – поиск в результатах поиска без необходимости формирования множества запросов. В отличие от последовательного наложения фильтров при фасетном поиске, здесь обычно речь идет о запросах к полуструктурированным данным с интегрированными объектами (например, как это реализует язык запросов xQuery). Для пользователя это означает, что поисковая машина может учитывать результаты поиска в «родительской» структуре и автоматически переходить к поиску во «вложенных» структурах по каким-то установленным критериям.
- Поиск с учетом близости или Поиск по размытым фразам (Proximity Search, Phrase queries with slop, Span Queries) – При проведении полнотекстового поиска обычных логических выражений может оказаться недостаточно, поэтому популярные поисковые машины поддерживают специальные выражения (NEAR, NOT NEAR, FOLLOWED BY, NOT FOLLOWED BY, SENTENCE, FAR, ...) для поиска с учетом близости (расположения искомых слов/фраз в тексте друг относительно друга, начала/конца текста, последовательности употребления и т.п.). Т.е. такой поиск позволяет прямо в запросе определять возможное число других слов между ключевыми словами при полнотекстовом поиске.
- Поиск по приблизительному совпадению (Fuzzy String Matching) – дает возможность поиска не только по точному совпадению поисковых фраз (слов), но и с учетом приблизительного совпадения. Обычно нечеткий поиск использует специализированные алгоритмы и словари для определения степени близости слов или фраз. В общем случае, такой поиск на типовых торговых площадках бывает полезен, когда результат точной обработки запроса пуст или нежелательно краток (пользователь не помнит точно название искомого ресторана, неверно набрал название бренда и т.п.). В этом случае, вместо выдачи пустого результата, поисковая подсистема может сама переключиться в режим нечеткого поиска и выдать результаты по близким фразам/словам.
- Поиск по диапазону значений (Range Queries) – возможность поиска в заданном диапазоне значений (минимум, максимум) для свойств, содержащих значения даты или числовые значения.
- Логические выражения и Cтруктурированные запросы (Conditional Logic, Structured Queries) – позволяют формировать сложные запросы, содержащие множественные условия И/ИЛИ, отрицания и пр. Логические выражения могут поддерживаться как напрямую в тексте самого запроса, так и косвенно (через выбор режима поиска). Структурированные поисковые запросы являются альтернативой запросам на естественном языке. Поддержка какого-либо языка структурированных запросов (Structured Query Data Sub-Language), а иногда и нескольких, является важным параметром любой современной поисковой машины. Структурированные запросы позволяют создавать специализированные интерфейсы и опции для «глубокой» настройки режимов поиска. Кроме того, через такие запросы можно осуществлять вложенный поиск по объектам со сложной структурой и связями, а также запросы с присоединениями/пересечениями (JOINs).
- Регулярные выражения (Regular Expressions) – формальный язык поиска и осуществления манипуляций с подстроками в тексте, основанный на использовании метасимволов. Регулярное выражение фактически определяет строку-образец (шаблон, маску), состоящую из символов и метасимволов и задающую правило поиска.
- Функции в запросах (Function Queries) – использование разнообразных функций в поисковых запросах (поиск по значениям функций). Поисковые машины могут поддерживать множество различных функций (математические, статистические, агрегирующие, двоичные ...). Механизмы использования таких функций также могут быть разными (в тексте запроса, через API и т.п.).
- Группировка и свертывание по полям (Field Collapsing) – возможность группировать однотипные товары/услуги с одновременных «свертыванием» их в результатах поиска в один объект. Например, при поиске по фразе "детский велосипед" мы можем сгруппировать выдачу по параметру модели и не предлагать для одних и тех же моделей несколько товаров, отличающихся исключительно цветом или комплектацией (в поисковой выдаче одной модели будет соответствовать одна карточка товара, но с перечнем доступных цветов/комплектаций). Другой пример такой группировки – поиск по e-mail, когда найденные сообщения группируются по теме и «сворачиваются» в последовательность вслед за сообщением, с которого началось обсуждение.
- Скроллинг (прокрутка) страниц с результатами и управление размером выдачи (Scrolling/Paging of large result sets) – не всегда разумно выдавать пользователю все результаты поиска единым блоком (тем более, что это замедляет и первичную выдачу результата, и процесс навигации), для управления размером страниц и перемещением между ними предназначен специальный функционал поисковой подсистемы.
- Статистические данные в выдаче (Stats) – при выдаче результатов поиска бывает полезной обобщенная статистическая информация по ним (минимальная, максимальная цена, общее количество и т.п.). Возможность показа таких данных одновременно с результатами поиска позволяет дать пользователю более полную картину и облегчить выбор товаров/услуг.
- Предсказание времени выполнения запроса (Predicting Query Execution Time) – возможность приблизительно оценить время выполнения запроса "до" либо "в процессе" его исполнения. Не всегда существует техническая возможность быстро выдать пользователю результаты запроса. И хотя именно быстрая реакция поисковой системы исключительно важна, существуют ситуации, когда пользователь готов мириться с задержкой и ждать. В качестве примера можно привести поиск по похожему изображению товара и т.п. Однако, в таком случае пользователь хочет видеть динамику выполнения поиска и иметь оценку времени, оставшегося до конца исполнения.