我正在尝试了解 Blazegraph。目前我很困惑如何优化简单的查找。
假设我所有的顶点都有一个id
唯一的属性。此属性由用户设置。有什么方法可以加快找到特定顶点的速度,id
同时仍然坚持使用 Tinkerpop API?
此处定义的搜索 API是唯一的方法吗?
我以前的经验是在TitanDB中,在 Titan 的情况下,可以定义一个索引,Tinkerpop API 可以完美地集成。有什么方法可以在不使用搜索 API 的情况下在 Blazegraph 中实现相同的结果?
中间遍历 V() 是否使用索引取决于 a) 是否存在合适的索引和 b) 特定图形系统提供者是否实现了此功能。
Gremlin (Tinkerpop) 没有指定如何设置索引,尽管文档提供了如下内容
graph.createIndex("username",Vertex.class)
但可能保留给ThinkerGraph 实现,事实上它说
每个图形系统都有不同的机制来定义索引和模式。TinkerPop3 在这方面不需要任何一致性。在 TinkerGraph 中,唯一的定义是围绕索引。对于其他图形系统,可能需要先定义属性值类型、索引、边标签等,才能将数据添加到图形中。
Neo4J有一个例子
TinkerPop3 不提供用于为底层图形系统定义模式/索引的方法接口。因此,为了创建索引,直接调用 Neo4j API 很重要。
但是该插件的代码非常具体
graph.cypher("CREATE INDEX ON :person(name)")
请注意,对于 BlazeGraph ,搜索使用内置的全文索引