Найдите пути из графика, а затем посчитайте, сколько раз путь встречается в Azure Cosmos DB с помощью Gremlin. - PullRequest
0 голосов
/ 25 мая 2018

Я сохраняю события потока кликов в базе данных графа, используя следующую структуру enter image description here

Пользователь выполняет несколько событий, и каждое событие имеет преимущество перед предыдущим событием:

  • Вершинами являются 'пользователь' и 'событие'
  • Края 'выполнены' и 'предыдущие'

Каждое событие имеет свойство с именем referer.Например, если пользователь просматривает страницу www.foobar.com/aaa, то будет событие просмотра страницы, и у него будет ссылка: www.foobar.com/aaa

Теперь я хочу найти возможныепути с домашней страницы с их количеством

Используя приведенный ниже запрос Гремлин, я не могу найти возможные пути, но не могу сгруппировать их, чтобы найти количество каждого пути:

g.V().hasLabel('event').has('referer','https://www.foobar.com/').in('previous').in('previous').path().by('referer')

Вывод:

 [
      {
        "labels": [
          [],
          [],
          []
        ],
        "objects": [
          "https://www.foobar.com/",
          "https://www.foobar.com/aaa",
          "https://www.foobar.com/bbb"
        ]
      },
      {
        "labels": [
          [],
          [],
          []
        ],
        "objects": [
          "https://www.foobar.com/",
          "https://www.foobar.com/aaa",
          "https://www.foobar.com/bbb"
        ]
      },
      {
        "labels": [
          [],
          [],
          []
        ],
        "objects": [
          "https://www.foobar.com/",
          "https://www.foobar.com/ccc",
          "https://www.foobar.com/ddd"
        ]
      }
    ]

Я хочу вывод, подобный следующему:

[[
  "https://www.foobar.com/",
  "https://www.foobar.com/aaa",
  "https://www.foobar.com/bbb"
]:2,
[
  "https://www.foobar.com/",
  "https://www.foobar.com/ccc",
  "https://www.foobar.com/ddd"
]:1]

Поскольку я использую Azure Cosmos Graph db, доступны только эти операторы Гремлина https://docs.microsoft.com/en-us/azure/cosmos-db/gremlin-support
Спасибо

1 Ответ

0 голосов
/ 25 мая 2018

Вы можете применить groupCount к path, используя синтаксис, такой как:

groupCount().by(path().by('referer'))

Таким образом, вы можете переписать ваш запрос как:

g.V().hasLabel('event').
      has('referer','https://www.foobar.com/').
      in('previous').
      in('previous').
      groupCount().by(path().by('referer'))

Надеюсь, это поможет,

Ура Кельвина

...