OrientDB GraphDatabase:@RID 的 OSQLSynchQuery 以获取 graph.getVertex(rid) ...从索引键加载顶点的最快方法?
Posted
技术标签:
【中文标题】OrientDB GraphDatabase:@RID 的 OSQLSynchQuery 以获取 graph.getVertex(rid) ...从索引键加载顶点的最快方法?【英文标题】:OrientDB GraphDatabase: OSQLSynchQuery for @RID to get graph.getVertex(rid) ... the fastest way to load a vertex from index key? 【发布时间】:2012-06-10 17:02:59 【问题描述】:鉴于具有索引“名称”(唯一或非唯一)的基本蓝图兼容 OrientGraph,如果需要,有什么建议可以改进以下内容?
注意:我找不到使用索引加载 [蓝图] 顶点的权威指南。我有一个大图,使用 has('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"));
【问题讨论】:
【参考方案1】:OrientDB 支持IndexableGraph 接口。要使用它,请查看:
https://github.com/tinkerpop/blueprints/wiki/Graph-Indices
【讨论】:
再次感谢Lvca。它起作用了:Index<Vertex> index = graph.getIndex("name", Vertex.class); Iterable<Vertex> results = index.get("name","bob"); Vertex v1 = results.iterator().next();
...我需要使用 Tinkerpop API 创建索引(而不是直接执行 SQL):Index<Vertex> index = graph.createIndex("account_id", Vertex.class);
以上是关于OrientDB GraphDatabase:@RID 的 OSQLSynchQuery 以获取 graph.getVertex(rid) ...从索引键加载顶点的最快方法?的主要内容,如果未能解决你的问题,请参考以下文章
OrientDB 和 PostgreSQL JDBC 驱动程序发生冲突(InvocationTargetException):除了 JDBC 之外,是不是有一个包含所有内容的 OrientDB JAR