Найти кратчайший путь с OrientDB

Я пытаюсь найти кратчайший путь с помощью приведенного выше кода:

List<ODocument> spath = orientGraph.getRawGraph().query(new OSQLSynchQuery<Object>(
            "select flatten(shortestPath("+v1+","+v2+",'BOTH').out)"));

Насколько я понимаю, это вернет список ребер. Но когда я печатаю результаты, я получаю это

[#-2:0 v0]

Что это значит? Также интересно, не будет ли проблем с этой функцией из-за легковесных краев. (У меня была аналогичная проблема, когда я пытался использовать функцию getVertices())


person salvador    schedule 08.12.2013    source источник


Ответы (1)


Не могли бы вы попробовать:

select expand( out ) from ( select shortestPath("+v1+","+v2+",'BOTH') )
person Lvca    schedule 09.12.2013
comment
Я пробовал это, но, похоже, это работает вечно. У меня 105 000 узлов и 2 000 000 ребер. Какое примерно время выполнения? - person salvador; 10.12.2013
comment
Зависит от того, как подключен ваш узел, вашей конфигурации HW/SW и ваших настроек. Сколько занимает только это: выберите самый короткий путь (+ v1 +, + v2 +, «ОБА»)? - person Lvca; 11.12.2013
comment
Какой у тебя hw/sw cfg? - person Lvca; 12.12.2013
comment
У меня нет особой конфигурации. Я загружаю данные с помощью этого кода и пытаюсь найти кратчайший путь с помощью этого код - person salvador; 12.12.2013
comment
hw/sw config означает, какое оборудование у вас есть с точки зрения ЦП/ОЗУ/диска, а для ПО означает, какая у вас ОС и какая версия OrientDB - person Lvca; 13.12.2013
comment
У меня процессор 2,3 ГГц (i5), 4 ГБ ОЗУ и диск на 320 ГБ. Я работаю на Macintosh OSX Mavericks (10.9) и использую orientdb-1.6.2. - person salvador; 14.12.2013
comment
Вы используете удаленный или локальный/локальный URL-адрес? Если удаленно, убедитесь, что кеш включен на сервере. Откройте bin/server.sh/.bat и установите это: -Dcache.level2.enabled=true -Dcache.level2.size=-1 -Dcache.level1.enabled=true -Dcache.level1.size=-1 - person Lvca; 16.12.2013
comment
Нет, я использую локальный URL - person salvador; 16.12.2013
comment
Я до сих пор не могу найти кратчайший путь. Возможно ли, что легкие края вызывают проблему? Я спрашиваю, потому что столкнулся с этой проблемой, когда хотел использовать функцию countEdges(). - person salvador; 19.12.2013
comment
countEdges() не работает с облегченными ребрами. Почему вы его используете? - person Lvca; 20.12.2013
comment
Я знаю, что это не работает. Поэтому я прекращаю его использовать. Мне просто интересно, есть ли сейчас аналогичная проблема с моим случаем, потому что мне еще не удалось найти кратчайший путь - person salvador; 20.12.2013