#graph #traversal #arangodb
#График #обход #arangodb
Вопрос:
Я изучал Arangodb и обход графика с использованием AQL, и я просмотрел некоторые примеры, которые можно найти в Интернете, такие как маршруты полетов, актеры и фильмы, но у меня возникли проблемы с написанием того, что, как я изначально думал, будет простым экспериментом по рекомендации продукта, в котором клиенту рекомендуются продукты, которые он / она не покупал, на основе покупок других клиентов (которые совершили аналогичные покупки).
Это то, чего мне удалось достичь до сих пор, извлекая продукты, которые другие клиенты, которые приобрели тот же продукт, что и текущий клиент
FOR products IN 1..1 OUTBOUND 'customers/118685' bought
FILTER products._id LIKE "products/%"
FOR other_buyers IN 1..1 INBOUND products bought
FILTER other_buyers._id != 'customers/118685'
FOR other_buyers_products IN 1..1 OUTBOUND other_buyers bought
return other_buyers_products
Кроме того, я не достиг той стадии, когда рекомендация могла бы быть доработана для клиентов, которые совершили больше похожих покупок (т. Е. на основе большего количества) с текущим клиентом. Ценю советы или полезные примеры.
Ответ №1:
это очень открытый вопрос. более точный вопрос привел бы к большему количеству и лучшим ответам… но я попробую.
вы можете выразить свой текущий запрос более сжатым способом:
FOR product IN 3..3 ANY 'customers/1' purchases
RETURN DISTINCT product
подсчет вхождений продукта может быть легко добавлен с помощью COLLECT:
FOR product IN 3..3 ANY 'customers/1' purchases
COLLECT pid = product._id WITH COUNT INTO count
RETURN { pid, count }
это все еще очень наивный подход. в итоге вы получите рекомендации типа «вы когда-то купили банан, вам следует купить туалетную бумагу», потому что в конечном итоге все покупали эти вещи. вы можете улучшить свои результаты, сохранив не только то, какой продукт купил клиент, но и когда. Затем вы сможете узнать, какие продукты часто покупаются вместе, например, фонарик и батарейки.
для дальнейшего вдохновения поищите в Интернете, например, здесь.