Page tree
Skip to end of metadata
Go to start of metadata

Поисковая персонализация работает путём пересортировки товаров, найденных вашим поисковым механизмом (ElasticSearch, Solr, Sphinx, Mongosearch и другие).

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

Пример

Клиент ввел поисковый запрос. Ваш поисковый механизм вернул вам подходящие товары, например (перечислены идентификаторы):

  • 33
  • 8495
  • 32
  • 5473
  • 456
  • 48556
  • 48564
  • 6584
  • 356
  • 76243

Предположим, что эти товары соответствуют поисковому запросу и отсортированы в соответствии с правилами поискового механизма. Однако, может быть что клиенту больше подходят товары 346, 6584 и 456. Об этом вам может сказать REES46.

Вы передаете в API REES46 этот список идентификаторов товаров с помощью GET-запроса, и в ответ получаете отсортированный список тех же идентификаторов, но теперь релевантные клиенту товары находятся в начале списка:

  • 356
  • 6584
  • 456
  • 32
  • 33
  • 5473
  • 48564
  • 76243
  • 8495
  • 48556

Затем вы выводите эти товары в том порядке, в котором получили от REES46.

API

Для ранжирования поискового запроса отправьте GET запрос на API REES46:

http://api.rees46.com/recommend?shop_id=КОД_МАГАЗИНА&ssid=КОД_СЕССИИ&recommender_type=rescore&items=СПИСОК_ТОВАРОВ_ЧЕРЕЗ_ЗАПЯТУЮ

где

  • shop_id – код вашего магазина, полученный на странице настроек магазина;
  • ssid – идентификатор сессии пользователя, который можно получить из cookie с именем rees46_session_id;
  • recommender_type – укажите rescore;
  • items – список товаров через запятую, например: 33,566,72425,865735,6345,23446.

Пример запроса:

http://api.rees46.com/recommend?shop_id=f95342356fa619749015b7225f3b7db3&ssid=f1bffffd-f3dd-4238-9541-5a135472765c&recommender_type=rescore&items=33,8495,32,5473,456,48556,48564,6584,356,76243

Пример ответа:

["356","6584","456","32","33","5473","48564","76243","8495","48556"]

Ответ возвращается в формате JSON.

Не сломайте сортировку

Важно учитывать, что когда вы, получив список идентификаторов, делаете SQL запрос вида:

SELECT * FROM items WHERE id IN ("752","34761","31091","32106","36508");

То СУБД не обязана соблюдать эту сортировку, и результаты будут выводиться в непредсказуемом порядке. Поэтому после выборки данных из БД необходимо либо заново отсортировать товары в порядке, как вернул их REES46, либо дописать SQL-запрос для сохранения порядка (см. ORDER BY FIELD для MySQL или ORDER BY CASE для Postgresql).

Обратите внимание

Не стоит передавать в API больше 1000 идентификаторов одновременно. Если у вас поиск выдает очень много рекомендаций, лучше разбивать сортировку на страницы по 200 товаров.

Нюанс с ssid

 В некоторых случаях (пользователь совсем новый, только что зашел на сайт и сразу попал в результаты поиска) cookie с именем rees46_session_id может иметь пустое значение. В этом случае необходимо инициализировать сессию пользователя, используя JS SDK, PHP SDK или Ruby SDK, либо не отправлять запрос на сортировку до тех пор, пока cookie не приобретёт значение (обычно это происходит при ближайшем обновлении страницы пользователем).

 

 

  • No labels