Логика работы поиска включает два правила:
Предварительно нужно ввести термины и перечислить отдельные правила поиска. Далее их можно будет собрать в единый запрос, где будут указаны приоритеты правил и объяснено ранжирование результатов.
Слово - произвольная последовательность букв и/или цифр без пробелов, знаков пунктуации или спецсимволов.
Например, "XC12" - это одно слово, а словосочетание "сине-зелёные водоросли" рассматривается поисковыми алгоритмами как три отдельных слова: "сине", "зелёные", "водоросли".
Это связано с тем, что все символы, не являющиеся буквами и цифрами, заменяются на пробелы, образуя слова. Например, артикул "XC-12/42" - это три слова: "XC", "12", "42".
Из этого следует, что если есть товары с артикулами: "XC/12", "XC-12", "XC 12", то поиск не видит между ними разницы, так как считает, что все они состоят из двух слов "XC" и "12". Такой анализ называется стандартным.
1. Стандартное точное соответствие - это совпадение слова в поисковом запросе и в товаре целиком.
Например, если в запросе указано "гайковёрт", а в название товара "гайковёрт универсальный", то считается, что это точное соответствие. Либо, когда и в запросе указано "XC12", и в артикуле товара "XC12", то это также считается точным совпадением.
2. Стандартное соответствие с учётом морфологии - это совпадение с учетом морфологических преобразований в окончаниях слов.
Например, если в запросе указано "офисное", а название товара "офисный стул", то это считается соответствием слова с учётом морфологии. Точное совпадение в таком случае не выполняется.
Морфологические анализаторы работают неидеально. Есть ряд случаев, когда они ошибаются, но в целом с ними лучше, чем без них. В inSales используется алгоритм snowball для языков: русского, английского, немецкого, французского, испанского, каталанского.
Морфологический анализ сопровождается игнорированием стоп-слов для всех перечисленных языков. Например, запрос "это офисное" найдёт товар "офисный стул", так как "это" - стоп-слово, которое будет отброшено.
1. Стандартное соответствие по начальному фрагменту - это совпадение по фрагменту (токену), содержащему начало слова (edge N-gram).
Например, если в запросе указано "офис", и находится товар "офисный стул", то значит использовалось соответствие по начальному фрагменту.
Для поиска по начальным фрагментам используются токены от 1 до 15 символов. Поисковый кластер для указанного товара заранее генерирует фрагменты: "о", "оф", "офи", "офис", "офисн", "офисны", "офисный", "с", "ст", "сту", "стул".
Сгенерированные фрагменты считаются словами, поэтому поисковый кластер ищет по ним точно так же, как если бы использовалось стандартное точное соответствие для товара с названием "о оф офи офис офисн офисны офисный с ст сту стул".
2. Стандартное соответствие по произвольному фрагменту - это совпадение по любому фрагменту в слове (N-gram).
Например, когда в запросе указано "тул", а товар называется "офисный стул", то значит использовалось совпадение по произвольному фрагменту.
Кластер генерирует фрагменты от 2 до 10 символов. Для "стул" будут получены фрагменты: "ст", "сту", "стул", "ту", "тул", "ул", а для артикула "XC12" будут получены фрагменты: "XC", "XC1", "XC12", "C1", "C12", "12". Полученные токены также рассматриваются в качестве отдельных слов как для соответствия по начальному фрагменту.
1. Буквальное соответствие по произвольному фрагменту (с учетом спецсимоволов) - алгоритм, при котором ни поисковый запрос, ни значение атрибута товара не разбивается на слова. Каждый запрос рассматривается как единое ключевое слово вне зависимости от наличия пробельных символов, знаков пунктуации и спецсимоволов.
Буквальный поиск позволяет поисковому кластеру различать, например, артикулы: "XC/12", "XC-12" и "XC 12". Каждый из трёх вариантов состоит из одного ключевого слова соответственно "XC/12", "XC-12" и "XC 12". При этом, если в запросе указано "XC 12", то найден
будет только последний товар, а по запросу "-1" будет найден только товар с артикулом "XC-12".
Буквальный поиск используется только для штрихкодов и артикулов. Поскольку эти атрибуты важно уметь искать по фрагменту, к ключевым словам применяется разбиение на фрагменты, однако они отличаются от рассмотренных ранее.
Например, для строки "XC 12" будут сгенерированы токены: "XC", "XC ", "XC1", "XC_12", "C", "C1", "C_12", "_1", "_12", "12". (Пробельный символ для наглядности обозначен через нижнее
подчеркивание "_").
2. Буквальное соответствие по произвольному фрагменту с предварительной конкатенацией работает так же, как буквальное соответствие по произвольному фрагменту, рассмотренное выше, но с тем отличием, что все пробельные символы, знаки пунктуации и спецсимволы удаляются из строк, а оставшиеся буквы и цифры
склеиваются в одно слово. Данное соответствие также применяется только для артикулов и штрихкодов
Если у трёх товаров заданы артикулы: "XC/12", "XC-12" и "XC 12", то поисковый кластер всех их хранит в виде строки "XC12". Тут также применяется разбиение на фрагменты.
Из строки "XC/12" кластер сгенерирует токены: "XC", "XC1", "XC12", "C12", "12".
Такой поиск позволяет найти товар с артикулом "XC/12" по запросам: "XC/12", "XC12", "XC-12", "XC 12", "C1" и так далее.
В поиске нет различия в регистре символов. Для поиска два артикула "XC12" и "xc12" считаются идентичными
Также заменяется "ё" на "е" и убираются диакритические знаки у букв. То есть для поиска нет разницы между "ежик" и "ёжик", а также между "el niño" и "el nino".
Для каждого атрибута товара обычно используются несколько правил поиска.
Например, для поиска по артикулу важно учесть, было ли найдено
точное соответствие, не содержится ли в запросе фрагмент какого-либо артикула и присутствуют ли в запросе спецсимволы.
Для большинства атрибутов поиск выполняется одновременно по ряду правил. Для этого правила объединяются в группы, и поисковый кластер ищет наилучшее соответствие внутри каждой группы. При этом правила не считаются равносильными, так как каждому назначается свой приоритет.
Например, точное соответствие по названию наберёт
больше баллов и поднимется выше в выдаче, чем соответствие фрагмента артикула. В то же время точное совпадение артикула будет выше в выдаче, чем точное совпадение названия.
Если в запросе указаны значения разных атрибутов товара одновременно, необходимо использовать комбинированный поиск по нескольким атрибутам. Такой поиск позволяет искать, например, по артикулу и названию одновременно, но обладает целым рядом
ограничений, из-за которых система inSales использует его только в качестве вспомогательной секции в общем поисковом запросе.
Поисковый запрос состоит из групп, которые упорядочены по приоритету от более приоритетных к менее приоритетным. Правила поиска внутри групп упорядочены по такому же принципу.
Стандартное точное соответствие:
Стандартное соответствие по начальному фрагменту:
Буквальное соответствие по произвольному фрагменту:
Буквальное соответствие по произвольному фрагменту:
Стандартное соответствие:
Стандартное соответствие:
Стандартное соответствие по произвольному фрагменту для краткого описания.
Стандартное соответствие по произвольному фрагменту для описания.
Стандартное соответствие по начальному фрагменту:
Стандартное точное соответствие: