Попробуем взглянуть на проблему со стороны спецов, которые всеми силами стараются улучшить продажи в своем интернет-магазине. С ростом ассортимента, поиск становится ключевым компонентом, стабильность и качество которого влияет на прибыль непосредственно.
Другими словами, стратегия “раз, раз и в продакшн” может ощутимо повлиять на плотность волосяного покрова ответственных индивидуумов. А постоянное тестирование и, уж простите, достаточно покрытие — очень даже хороший путь в мир добрых единорогов и безоблачной беспроблемности. Но как?
Рассмотрим возможные альтернативы (автор позволил себе упростить некоторые моменты, ради привлечения сестры таланта).
АБ тестирование
Дружненько садимся и ручками проверяем основные поисковые запросы. Топ1000 будет достаточно? Или может лучше Топ10000? А вдруг в длинном “хвосте” редких запросов зарыт существенный процент прибыли? Ой, а для каждого нового инкремента нужно все повторить?
F-measure (Precision/Recall)
Собственно, необходимо постараться ответить на два простых (на первый взгляд) вопроса:
Сколько продуктов, из выбранных, являются релевантными? (Precision)
Сколько релевантных продуктов выбрано? (Recall)
Минутка занудства:
Сложность, очевидно, в необходимости знать какие продукты релевантны для каждого конкретного запроса. По сути, речь идет о “золотом наборе” результатов поиска, с которым и необходимо сравнивать текущие результаты. Таких наборов необходимо много (для каждого запроса, в котором мы заинтересованы), кроме того, наборы не являются статичными: появление новых продуктов или окончание продаж старых — однозначный повод перестроить “золотые наборы”. Как минимум, в рамках одной категории.
Одним словом — не самый простой способ. От слова очень.
Clickthrough rate (CTR)
CTR необходимо мониторить всегда, но в контексте рассматриваемой задачи это тот случай, когда если и что-то заметил, то все равно уже поздно. Полезно? Безусловно. Решает проблему? Однозначно нет, поскольку о проблеме лучше знать до того, как о ней узнает покупатель.
Субъективная оценка релевантности?
Очень интересно, но как? И, самое главное, кем? Краудсорсинг с выборочной и кросс проверкой? Девочки из HR отдела? Тот случай, когда очень хочется позвать добрых добрых роботов и нагрузить их работой по самое небалуйся. Роботу не тяжело!
Стойте, стойте, это все хорошо, но можно тоже самое, но проще и дешевле?
Четкие намерения сильно упрощают оценку качества поиска
Intent-based поиск уже давно не новость, но как намерения могут помочь упростить и, что очень важно, автоматизировать проверку поиска? Рассмотрим простой пример, некто очень хочет приобрести Leatherman Skeletool. Указанные ключевые слова однозначно описывают конкретный продукт (опустим цвет).
Итак, имея вполне однозначное желание, человек отправляется в интернет-магазин в надежде оформить заказ как можно быстрее (кому интересно терять время на несущественные мелочи). Отметим еще раз: поисковый запрос однозначно описывает желание человека. Более того, запрос выглядит вполне достаточным для валидации поиска.
Walmart, кстати, мог бы и лучше постараться.
А есть ли другие, подобные, запросы, которые однозначно описывают намерения покупателя? На самом деле таких запросов очень много. Обобщив, можно выделить как минимум два класса поисковых запросов:
- Запросы с уникальным названием конкретного продукта
- Запросы с уникальным названием бренда и конкретного продукта
Таким образом, не так сложно создать полностью автоматизированный инструмент для базовой валидации поискового решения. Процент покупателей с четкими намерениями достаточно велик (зависит от конкретного магазина), более того, именно покупатели с четкими намерениями быстро теряют терпение, не получая желаемого. Eще один пример безальтернативных результатов — Maxxis Bighorn:
Плохие стратегии или к вам идет Skelita
К слову, «негативные варианты» очень важны важны. Например, если в ассортименте магазина нет некоторых продуктов, не стоит их “находить”. И уж тем более смешными выглядят результаты, полученные путем неоправданного упрощения исходного поискового запроса (очень старый подход, к слову):
Распознавание и правильная работа с намерениями покупателя — ключ к успеху. Следующая статья будет посвящена автоматизированному инструментарию и существенной экономии бюджета на тестировании. Качественный поиск без большой команды тестеров вполне реален.
Разное
- Во время написания статьи ни один поисковый сервис не пострадал (но покраснели многие).
- «Плохой» поиск в Mvideo
- Смешных человечков можно взять тут.
- Автор не рекомендует покупать skeletool (хрупкий), а шины норм :)
Комментарии (12)
lair
18.09.2018 11:31Например, если в ассортименте магазина нет некоторых продуктов, не стоит их “находить”. И уж тем более смешными выглядят результаты, полученные путем неоправданного упрощения исходного поискового запроса
Во-первых, это не упрощение, а поиск по близости. Во-вторых, как вы объективно отличите ошибку в запросе (которую надо исправить, чтобы продать) от правильного запроса, который исправлять не надо?
Таким образом, не так сложно создать полностью автоматизированный инструмент для базовой валидации поискового решения.
Очень, очень, очень базовой. Она, несомненно, должна быть, но вопрос в том, какую долю — опять-таки, объективно — из поисковых запросов этот инструмент покрывает.
PS
F-measure (Precision/Recall)
Для поисковых запросов обычно используют precision@k или MAP, потому что для построения нормальных precision/recall вам нужно работать со всем массивом возвращенных результатов, а это не очень осмысленно.
aarner Автор
18.09.2018 18:11Во-первых, это не упрощение, а поиск по близости.
Если мы говорим о близости двух последовательностей символов — то это как раз очень серьезное упрощение. Asus и ass несомненно близки (levenshtein distance = 1), но, согласитесь, совершенно несравнимы :)
Кроме того, с точки зрения покупателя, это слишком «глубокие» детали. Он не получает желаемого и, что часто хуже, видит продукты, которые уж точно не ожидает увидеть (в итоге
разочарование, негативное отношение к магазину и т.д.)
Во-вторых, как вы объективно отличите ошибку в запросе (которую надо исправить, чтобы продать) от правильного запроса, который исправлять не надо?
Не хотел бы смешивать поиск, did-you-mean и search query-disambiguation-logic. Напишу отдельно о том, как можно действительно понять и поправить пользователя. В данном конкретном случае предусловие очень простое — поисковый запрос не содержит ошибок.
Очень, очень, очень базовой. Она, несомненно, должна быть, но вопрос в том, какую долю — опять-таки, объективно — из поисковых запросов этот инструмент покрывает.
А вот это очень хороший вопрос. Давайте проследим следующую цепочку рассуждений (для обычного e-commerce проекта):
- текстовый поиск преобладает
- product title обычно имеет наибольший вес при поиске
- несколько уникальных ключевых слов в поисковой строке, совпадающих с таковыми в названии продукта (title), однозначно гарантируют продукту большой score
Если, по какой-либо причине, эта логика нарушается (например, кто-то указал запредельно большой вес для описания продукта), то у нас проблема, о которой точно нужно знать, поскольку это, как вы отметили, база.
Соответственно, покрытие поисковых запрос не слишком критично. Причины две:
- поисковые запросы это история, мы не знаем что и как будут искать дальше
- если ломается базовая логика поиска — любой запрос потенциально «испорчен»
Для поисковых запросов обычно используют precision@k или MAP, потому что для построения нормальных precision/recall вам нужно работать со всем массивом возвращенных результатов, а это не очень осмысленно.
Да, все правильно, полный result set никто не анализирует, тем не мене «правильный» (или золотой) набор необходим в любом случаеlair
18.09.2018 18:15Он не получает желаемого и, что часто хуже, видит продукты, которые уж точно не ожидает увидеть
Вот вопрос "хуже ли то, что он видит неожиданные продукты" (в ситуации, когда искомых нет) — он совершенно не однозначный.
В данном конкретном случае предусловие очень простое — поисковый запрос не содержит ошибок.
… и как часто это бывает?
Соответственно, покрытие поисковых запрос не слишком критично
Только в том случае, если вас не интересует, как система ведет себя за пределами базовых запросов.
тем не мене «правильный» (или золотой) набор необходим в любом случае
Ну да, без него банально невозможно оценить, как работает ваш поиск (даже если этой золотой набор задан неявно).
aarner Автор
19.09.2018 01:21Давайте подытожим:
- Обе стороны согласны, что вопрос неооднозначный, только в вашем мире пользователи вместо «да ну лесом, поищу в другом магазине», говорят: «они такие лапочки, попробую другой запросик, вдруг повезет». Я только предлагаю не терять тех, кто мыслит в негативном ключе (большинство)
- В контексте обсуждаемой задачи (убедиться, что базовый поиск работает и человек, пришедший с четким намерением, получит желаемое) вполне работает
- В данном конкретном случае это верное утверждение. В более глобальном смысле описываемый подход является одним из
- Тоже верно подмечено: именно неявно заданные «золотые» наборы (или простой способ проверки полученных результатов на соответствие таковым) могут сохранить массу ресурсов
В любом случае, благодарю за комментарии и внимательность. Напишу вам отдельно, когда junit для поиска будет готов.lair
19.09.2018 01:23Я только предлагаю не терять тех, кто мыслит в негативном ключе (большинство)
Почему большинство-то? Откуда вы это знаете? Я вот не ухожу из таких магазинов.
В данном конкретном случае это верное утверждение.
Тогда вы оцениваете не "качество продуктового поиска" (заявленное в заголовке), а качество поиска по точному совпадению.
02A
19.09.2018 09:39+1Я вот не ухожу из таких магазинов.
наверное у Вас много свободного времени и очень большое желание все-таки найти «черную кошку в темной комнате» :)… уверен, что если магазин предлагает куклу как альтернативу мультитул, то скорее всего это не тот магазин и нет смысла искать мультитул в магазине игрушек… я бы ушелlair
19.09.2018 10:54Нет, я просто не вижу смысла уходить из амазона, если я не нашел в нем конкретный товар — на вероятность нахождения следующего товара это никак не влияет.
smilyfox
18.09.2018 12:49Микротик на латинице с первого раза правильно написать вообще нереально, если не знать что это усеченный вариант с латышского. Далеко не все магазины выдерживают это испытание.
aarner Автор
18.09.2018 18:16Да, но это отдельная история. Кстати, даже если did-you-mean не реализован, проблема относительно легко решается синонимами. Человеки ошибаются, поэтому:
microtic, mikrotic, microtik -> mikrotik
Видел куда более заковыристые списки :)
theco6ak
Самый цивильный поиск, что видел — в комусе. внезапно
aarner Автор
Нет ничего идеального :)
Например moto+g6 — фломастеры