“Я намереваюсь купить” или самый простой способ оценить качество продуктового поиска

    “Зачем вам шуруповерт, возьмите лучше этот чудесный самокат”, — наверняка вам знакома похожая ситуация. Современные интернет-магазины (а уж тем более маркетплейсы) озадачивают потенциального покупателя такой горой нерелевантных товаров, что, порой, может возникнуть желание обратиться в старый добрый специализированный магазин с двумя опциями и продавцом-экспертом.



    Попробуем взглянуть на проблему со стороны спецов, которые всеми силами стараются улучшить продажи в своем интернет-магазине. С ростом ассортимента, поиск становится ключевым компонентом, стабильность и качество которого влияет на прибыль непосредственно.

    Другими словами, стратегия “раз, раз и в продакшн” может ощутимо повлиять на плотность волосяного покрова ответственных индивидуумов. А постоянное тестирование и, уж простите, достаточно покрытие — очень даже хороший путь в мир добрых единорогов и безоблачной беспроблемности. Но как?

    Рассмотрим возможные альтернативы (автор позволил себе упростить некоторые моменты, ради привлечения сестры таланта).

    АБ тестирование


    Дружненько садимся и ручками проверяем основные поисковые запросы. Топ1000 будет достаточно? Или может лучше Топ10000? А вдруг в длинном “хвосте” редких запросов зарыт существенный процент прибыли? Ой, а для каждого нового инкремента нужно все повторить?



    F-measure (Precision/Recall)


    Собственно, необходимо постараться ответить на два простых (на первый взгляд) вопроса:
    Сколько продуктов, из выбранных, являются релевантными? (Precision)
    Сколько релевантных продуктов выбрано? (Recall)

    Минутка занудства:



    Сложность, очевидно, в необходимости знать какие продукты релевантны для каждого конкретного запроса. По сути, речь идет о “золотом наборе” результатов поиска, с которым и необходимо сравнивать текущие результаты. Таких наборов необходимо много (для каждого запроса, в котором мы заинтересованы), кроме того, наборы не являются статичными: появление новых продуктов или окончание продаж старых — однозначный повод перестроить “золотые наборы”. Как минимум, в рамках одной категории.

    Одним словом — не самый простой способ. От слова очень.

    Clickthrough rate (CTR)


    CTR необходимо мониторить всегда, но в контексте рассматриваемой задачи это тот случай, когда если и что-то заметил, то все равно уже поздно. Полезно? Безусловно. Решает проблему? Однозначно нет, поскольку о проблеме лучше знать до того, как о ней узнает покупатель.

    Субъективная оценка релевантности?


    Очень интересно, но как? И, самое главное, кем? Краудсорсинг с выборочной и кросс проверкой? Девочки из HR отдела? Тот случай, когда очень хочется позвать добрых добрых роботов и нагрузить их работой по самое небалуйся. Роботу не тяжело!

    Стойте, стойте, это все хорошо, но можно тоже самое, но проще и дешевле?

    Четкие намерения сильно упрощают оценку качества поиска


    Intent-based поиск уже давно не новость, но как намерения могут помочь упростить и, что очень важно, автоматизировать проверку поиска? Рассмотрим простой пример, некто очень хочет приобрести Leatherman Skeletool. Указанные ключевые слова однозначно описывают конкретный продукт (опустим цвет).



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



    Walmart, кстати, мог бы и лучше постараться.

    А есть ли другие, подобные, запросы, которые однозначно описывают намерения покупателя? На самом деле таких запросов очень много. Обобщив, можно выделить как минимум два класса поисковых запросов:

    1. Запросы с уникальным названием конкретного продукта
    2. Запросы с уникальным названием бренда и конкретного продукта

    Таким образом, не так сложно создать полностью автоматизированный инструмент для базовой валидации поискового решения. Процент покупателей с четкими намерениями достаточно велик (зависит от конкретного магазина), более того, именно покупатели с четкими намерениями быстро теряют терпение, не получая желаемого. Eще один пример безальтернативных результатов — Maxxis Bighorn:



    Плохие стратегии или к вам идет Skelita


    К слову, «негативные варианты» очень важны важны. Например, если в ассортименте магазина нет некоторых продуктов, не стоит их “находить”. И уж тем более смешными выглядят результаты, полученные путем неоправданного упрощения исходного поискового запроса (очень старый подход, к слову):



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

    Разное


    • Во время написания статьи ни один поисковый сервис не пострадал (но покраснели многие).
    • «Плохой» поиск в Mvideo
    • Смешных человечков можно взять тут.
    • Автор не рекомендует покупать skeletool (хрупкий), а шины норм :)
    Поделиться публикацией
    Комментарии 12
      0
      Самый цивильный поиск, что видел — в комусе. внезапно
        0
        Нет ничего идеального :)
        Например moto+g6 — фломастеры
        +1
        Например, если в ассортименте магазина нет некоторых продуктов, не стоит их “находить”. И уж тем более смешными выглядят результаты, полученные путем неоправданного упрощения исходного поискового запроса

        Во-первых, это не упрощение, а поиск по близости. Во-вторых, как вы объективно отличите ошибку в запросе (которую надо исправить, чтобы продать) от правильного запроса, который исправлять не надо?


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

        Очень, очень, очень базовой. Она, несомненно, должна быть, но вопрос в том, какую долю — опять-таки, объективно — из поисковых запросов этот инструмент покрывает.


        PS


        F-measure (Precision/Recall)

        Для поисковых запросов обычно используют precision@k или MAP, потому что для построения нормальных precision/recall вам нужно работать со всем массивом возвращенных результатов, а это не очень осмысленно.

          0
          Во-первых, это не упрощение, а поиск по близости.

          Если мы говорим о близости двух последовательностей символов — то это как раз очень серьезное упрощение. Asus и ass несомненно близки (levenshtein distance = 1), но, согласитесь, совершенно несравнимы :)

          Кроме того, с точки зрения покупателя, это слишком «глубокие» детали. Он не получает желаемого и, что часто хуже, видит продукты, которые уж точно не ожидает увидеть (в итоге
          разочарование, негативное отношение к магазину и т.д.)
          Во-вторых, как вы объективно отличите ошибку в запросе (которую надо исправить, чтобы продать) от правильного запроса, который исправлять не надо?

          Не хотел бы смешивать поиск, did-you-mean и search query-disambiguation-logic. Напишу отдельно о том, как можно действительно понять и поправить пользователя. В данном конкретном случае предусловие очень простое — поисковый запрос не содержит ошибок.
          Очень, очень, очень базовой. Она, несомненно, должна быть, но вопрос в том, какую долю — опять-таки, объективно — из поисковых запросов этот инструмент покрывает.

          А вот это очень хороший вопрос. Давайте проследим следующую цепочку рассуждений (для обычного e-commerce проекта):
          1. текстовый поиск преобладает
          2. product title обычно имеет наибольший вес при поиске
          3. несколько уникальных ключевых слов в поисковой строке, совпадающих с таковыми в названии продукта (title), однозначно гарантируют продукту большой score

          Если, по какой-либо причине, эта логика нарушается (например, кто-то указал запредельно большой вес для описания продукта), то у нас проблема, о которой точно нужно знать, поскольку это, как вы отметили, база.
          Соответственно, покрытие поисковых запрос не слишком критично. Причины две:
          • поисковые запросы это история, мы не знаем что и как будут искать дальше
          • если ломается базовая логика поиска — любой запрос потенциально «испорчен»

          Для поисковых запросов обычно используют precision@k или MAP, потому что для построения нормальных precision/recall вам нужно работать со всем массивом возвращенных результатов, а это не очень осмысленно.

          Да, все правильно, полный result set никто не анализирует, тем не мене «правильный» (или золотой) набор необходим в любом случае
            +1
            Он не получает желаемого и, что часто хуже, видит продукты, которые уж точно не ожидает увидеть

            Вот вопрос "хуже ли то, что он видит неожиданные продукты" (в ситуации, когда искомых нет) — он совершенно не однозначный.


            В данном конкретном случае предусловие очень простое — поисковый запрос не содержит ошибок.

            … и как часто это бывает?


            Соответственно, покрытие поисковых запрос не слишком критично

            Только в том случае, если вас не интересует, как система ведет себя за пределами базовых запросов.


            тем не мене «правильный» (или золотой) набор необходим в любом случае

            Ну да, без него банально невозможно оценить, как работает ваш поиск (даже если этой золотой набор задан неявно).

              0
              Давайте подытожим:

              1. Обе стороны согласны, что вопрос неооднозначный, только в вашем мире пользователи вместо «да ну лесом, поищу в другом магазине», говорят: «они такие лапочки, попробую другой запросик, вдруг повезет». Я только предлагаю не терять тех, кто мыслит в негативном ключе (большинство)
              2. В контексте обсуждаемой задачи (убедиться, что базовый поиск работает и человек, пришедший с четким намерением, получит желаемое) вполне работает
              3. В данном конкретном случае это верное утверждение. В более глобальном смысле описываемый подход является одним из
              4. Тоже верно подмечено: именно неявно заданные «золотые» наборы (или простой способ проверки полученных результатов на соответствие таковым) могут сохранить массу ресурсов


              В любом случае, благодарю за комментарии и внимательность. Напишу вам отдельно, когда junit для поиска будет готов.
                0
                Я только предлагаю не терять тех, кто мыслит в негативном ключе (большинство)

                Почему большинство-то? Откуда вы это знаете? Я вот не ухожу из таких магазинов.


                В данном конкретном случае это верное утверждение.

                Тогда вы оцениваете не "качество продуктового поиска" (заявленное в заголовке), а качество поиска по точному совпадению.

                  +1
                  Я вот не ухожу из таких магазинов.

                  наверное у Вас много свободного времени и очень большое желание все-таки найти «черную кошку в темной комнате» :)… уверен, что если магазин предлагает куклу как альтернативу мультитул, то скорее всего это не тот магазин и нет смысла искать мультитул в магазине игрушек… я бы ушел
                    0

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

          0

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

            0
            Да, но это отдельная история. Кстати, даже если did-you-mean не реализован, проблема относительно легко решается синонимами. Человеки ошибаются, поэтому:
            microtic, mikrotic, microtik -> mikrotik

            Видел куда более заковыристые списки :)
            +1
            image

            Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

            Самое читаемое