Neo4j · Neo4j 5.26.20
Walmart строил рекомендации товаров на Neo4j по поведению покупателей; их инженер называл граф подходящим инструментом для рекомендаций в реальном времени.
Граф: (:Customer {id})-[:BOUGHT {at}]->(:Product {sku, name, price_usd}). Одна связь — одна покупка, повторная покупка того же товара — ещё одна связь.
Для кофеварки sku = '100' верните три других товара, которые купило больше всего разных её покупателей: product, customers. Порядок — по customers по убыванию, затем по названию.
В работе: Блок «С этим товаром покупают» в карточке товара.
Как проверяем
Движка Neo4j в браузере пока нет, поэтому здесь не запрос, а выбор решения. Выберите один вариант. После ответа — почему каждый вариант верный или нет. Ответ один на подход: после него показываем разбор.
Источник: кейс Neo4j: рекомендации товаров в реальном времени в Walmart, 2018. Условие пересказано своими словами.
Давали на собеседовании?
Ответов пока мало — ваш поможет.
Какой запрос соберёт блок «С этим покупают»?
- count(c), WHERE o <> p
- count(DISTINCT c), без WHERE o <> p
- count(DISTINCT c), WHERE o <> p, сортировка по счёту и названию
- товары покупателей кофеварки, но счёт по всем их покупателям