Должен ли я использовать RDB для этого случая сходства - PullRequest
0 голосов
/ 12 октября 2019

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

Я из мира RDB. Кажется, это нелегко сделать в RDB. Но для графика db мне также не ясно, как этого добиться, поскольку нет связи между магазинами. Я проверил близость: http://tinkerpop.apache.org/docs/current/recipes/#closeness-centrality

По сути, мой вопрос:

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

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 23 октября 2019

Ваш сценарий использования очень прост и эффективен для работы с графической БД из-за силы взаимосвязей.

Допустим, вы используете neo4j, и у вас есть узлы Store и Product, соединенные OFFERS отношения. Для каждого отдельного продукта существует один узел Product, и к одному узлу Product можно подключить несколько Store. Вот пример одного отношения:

(:Store {id: 1234, name: 'My Store'})-[:OFFERS]->(:Product {id: 9999, name: "Fido Treats"})

Чтобы найти магазин, который предлагает больше всего товаров, похожих на «Мой магазин», вы можете использовать функцию агрегирования COUNTдля подсчета количества общих продуктов, ORDER BY для сортировки в порядке убывания и LIMIT 1 для выбора результата с наибольшим количеством:

MATCH (s:Store)-[:OFFERS]->(p:Product)<-[:OFFERS]-(other:Store)
WHERE s.id = 1234
RETURN s, other, COUNT(p) AS commonCount
ORDER BY commonCount DESC
LIMIT 1
0 голосов
/ 23 октября 2019

Вы можете найти ряд примеров систем рекомендаций, которые были разработаны сообществом Neo4j здесь . Это даст вам некоторые идеи о модельных подходах и сопутствующих запросах.

Вам также могут быть интересны Алгоритмы графа Neo4j , которые имеют центральность близости, функции подобия и т. Д.

...