У меня есть граф в OrientDB с вершинами Area
и Place
с ребрами visited
. Ваш средний путь составляет Area > visited > Place > visited > Place > visited > Place > visited > Place
и так далее. Он отслеживает, какие места посетил пользователь после предыдущего. visited
содержит ГГГГммДД datestamp
.
Я пытаюсь узнать все Area
вершин на основе произвольных Place
вершин за определенный день - т.е. я хочу знать, из каких областей пользователи пришли в определенное место после посещения определенного места сначала.
Переход от любого отдельного Place
на пути был бы легким, но мне нужно следовать по пути только для определенного datestamp
. Что я сделал, так это то, что я создал индекс для datestamp
, чтобы быстро получить дневные visited
ребра, а затем нашел тот, у которого есть in
к первому Place
. Однако теперь я не могу понять, как создать быстрый запрос, который находит все Area
вершин на основе первого Place
, а также убеждается, что путь содержит и второй Place
. Я могу получить путь между первым и вторым Place
через shortestPath()
, но у меня все еще есть та же проблема с расширением пути для включения Area
вершин.
Я нашел некоторую теорию по этому вопросу, но если бы кто-нибудь мог указать мне правильное направление, как использовать OrientDB для этого вместо чистой теории графов, я был бы очень признателен - я работаю над этим на прошлой неделе. Первоначально это было сделано с помощью грубой силы путем обхода всего и последующего выбора, но по мере роста базы данных это явно не является устойчивым.