Войти Регистрация
Data base

160. Что спросить у покупателя сумки

Сложная

Neo4j · Neo4j 5.26.20

Бот eBay для Google Assistant держал каталог и диалоги в графе Neo4j: на запрос «brown bags» он решает, что уточнить дальше — бренд, размер, бюджет.

Граф: (:Listing {id, price_usd})-[:IN]->(:Category {name}), (:Listing)-[:HAS {value}]->(:Attribute {name}). У одного объявления атрибут может встречаться несколько раз (разноцветная сумка: два HAS к Color).

Для категории Handbags верните атрибуты, заполненные хотя бы у половины объявлений категории: attribute, covered (сколько объявлений), variants (сколько разных значений). Порядок — по variants по убыванию, затем по имени. Половину считаем от всех объявлений категории, в том числе без атрибутов.

В работе: Выбор уточняющего вопроса в диалоговом поиске товара.

Как проверяем Движка Neo4j в браузере пока нет, поэтому здесь не запрос, а выбор решения. Выберите один вариант. После ответа — почему каждый вариант верный или нет. Ответ один на подход: после него показываем разбор.
WITH для цепочекcount DISTINCTагрегациирекомендации

Источник: кейс Neo4j: eBay ShopBot / приложение eBay для Google Assistant, 2017. Условие пересказано своими словами.

Давали на собеседовании? Ответов пока мало — ваш поможет.

Какой запрос выберет атрибуты для уточняющего вопроса?

  • total по объявлениям с атрибутами
  • total по всем объявлениям, count(DISTINCT l) и count(DISTINCT h.value), оба MATCH от категории
  • count(h.value) без DISTINCT
  • второй MATCH без категории