【问题标题】:Vertex label based traversal基于顶点标签的遍历
【发布时间】:2017-06-15 08:35:16
【问题描述】:

我有一个用例,可以根据搜索名称的顶点标签进行遍历。

例如:我们的系统中有Org、Asset和Class三种标签(都包含name作为顶点的键)。 如果我们按名称进行搜索,发现它是一个 Org 顶点,我希望执行特定的遍历,以排除对其他顶点的额外遍历。

因此,在这种机制中,当我们必须为该顶点找到标签时,必须执行全局搜索,这完全不是解决方案。

那么建议使用什么机制(对于这种跨图的全文/部分文本搜索)?

【问题讨论】:

  • 您能否提供一个示例图 - 最好使用 Gremlin 代码来生成图 - 并解释遍历的预期结果?

标签: java datastax-enterprise gremlin tinkerpop3 datastax-enterprise-graph


【解决方案1】:

你可以这样做

inject('Org','Asset','Class').flatMap{
  g.V().has(it.get(),'name', 'theNameYouArSearchingFor')
}.
choose(label()).
  option('Org',   someTraversalForOrg()).
  option('Asset', someTraversalForAsset()).
  option('Class', someTraversalForClass())

我认为为了使用索引查找,你需要使用 has() 的三值形式——即你需要指定一个标签。但是,如果您想对多个标签使用索引查找,则必须执行三个单独的查找,并将它们与 flatMap 结合起来,如此处所示。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多