2012-06-10 1 views
0

Учитывая базовый ориентированный на Blueprints OrientGraph с индексом 'name' (уникальный или notunique), любые предложения о том, как можно улучшить следующее: если нужно?OrientDB GraphDatabase: OSQLSynchQuery для @RID, чтобы получить graph.getVertex (rid) ... самый быстрый способ загрузить вершину из ключа индекса?

Примечание: я не могу найти окончательное руководство по загрузке вершины [чертежей] с использованием индекса. У меня большой граф, и использование имеет ('name', 'bob') (в консоли) занимает 2 минуты! С другой стороны, поиск по индексу возвращается в миллисекундах.

Лучшее, что я придумал до сих пор:

OrientGraph graph = new OrientGraph("local:/graph1/databases/test", "admin", "admin"); 
List<ODocument> resultlist = graph.getRawGraph().query(new OSQLSynchQuery<ODocument>("SELECT FROM INDEX:name WHERE KEY = 'bob'")); 
ODocument resultodoc = resultlist.get(0).field("rid"); 
String rid = resultodoc.getIdentity().toString(); // would return something like #6:1500000 
Vertex v1 = graph.getVertex(rid); 
System.out.println(v1.getProperty("name")); 

ответ

0

OrientDB поддерживает интерфейс IndexableGraph. Для того, чтобы использовать его взглянуть на:

https://github.com/tinkerpop/blueprints/wiki/Graph-Indices

+0

Еще раз спасибо Lvca. Он работал: «Индекс index = graph.getIndex (« name », Vertex.class); Iterable results = index.get ("name", "bob"); Vertex v1 = results.iterator(). Next(); '... Мне нужно было создать индекс, используя Tinkerpop API (в отличие от непосредственного выполнения SQL):' Index index = graph.createIndex ("account_id", Vertex. класс); ' – Rob

Смежные вопросы