首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Gremlin 3.2.4上的Gremlin数学步长替代

Gremlin 3.2.4上的Gremlin数学步长替代
EN

Stack Overflow用户
提问于 2021-02-08 16:30:45
回答 1查看 37关注 0票数 0

数学函数在版本3.3.1 (http://tinkerpop.apache.org/docs/3.3.9-SNAPSHOT/upgrade/#_added_code_math_code_step_for_scientific_traversal_computing)中添加

但我使用的是https://github.com/microsoft/spring-data-gremlin。并且它支持版本3.2.4

有没有办法在gremlin 3.2.4上使用数学函数?

代码语言:javascript
复制
GraphTraversal t = graph.V().hasLabel("App").as("a")
        .inE("RANKS").as("r")
        .outV().as("k")
        .choose(__.select("k").by("countryCode").is(__.in(...)),
                __.math("1.0 / r").by("rank1"),
                __.math("1.0 / r").by("rank2"))
        .as("score")
        ...;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-11 19:30:16

在这种情况下,您可以使用sack()

代码语言:javascript
复制
gremlin> g.addV('App').as('a').
......1>   addV().property('countryCode','US').as('p1').
......2>   addV().property('countryCode','CA').as('p2').
......3>   addE('RANKS').property('rank1',5).property('rank2',10).from('p1').to('a').
......4>   addE('RANKS').property('rank1',3).property('rank2',6).from('p2').to('a').iterate()
gremlin> g.V().hasLabel("App").as("a").
......1>   inE("RANKS").as("r").sack(assign).by(constant(1.0)).
......2>   outV().as("k").
......3>   choose(__.select("k").by("countryCode").is(within('US')),
......4>          select('r').sack(div).by("rank1"),
......5>          select('r').sack(div).by("rank2")).
......6>   sack().as("score").
......7>   select('a','r','k','score')
==>[a:v[0],r:e[5][1-RANKS->0],k:v[1],score:0.2]
==>[a:v[0],r:e[6][3-RANKS->0],k:v[3],score:0.1666666667]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66098162

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档