gpt4 book ai didi

gremlin - Gremlin 中的远程遍历可以使用策略吗?

转载 作者:行者123 更新时间:2023-12-02 12:06:11 26 4
gpt4 key购买 nike

我正在使用 Gremlin-Java 和远程模式与 JanusGraph 进行交互。我现在在边缘定义一个新属性,以便在使用特定策略时过滤它们。以下是我尝试在应用程序中运行的代码,但该策略似乎被完全忽略。在本地 TP 实例上执行的相同代码可以正常工作。

graph.traversal()
.withRemote(DriverRemoteConnection.using(cluster, "g"))
.withStrategies(SubgraphStrategy.build().edges(__.has("field", "condition")).create())

有人知道这个功能是否仍然不支持吗?我正在使用 Janus 0.1.0。

最佳答案

这似乎是 Apache TinkerPop 中的一个错误。我opened an issue来跟踪这个。

一种解决方法是将远程驱动程序配置为使用 GraphSON 序列化器而不是 Gryo。这不需要对服务器配置进行任何更改。例如,在 conf/remote-objects.yaml 中:

hosts: [localhost]
port: 8182
serializer: { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV2d0,
config: { ioRegistries: [org.janusgraph.graphdb.tinkerpop.JanusGraphIoRegistry] } }

另一种解决方法是在 Gremlin 服务器脚本中定义另一个遍历源。例如,如果您使用默认的 conf/gremlin-server/gremlin-server.yaml,请更新 scripts/empty-sample.groovy 中的全局绑定(bind):

// define the default TraversalSource to bind queries to - named "g".
// define a subgraph traversal source - named "sg"
globals << [g : graph.traversal(),
sg: graph.traversal().withStrategies(SubgraphStrategy.build().edges(
__.has("field", "condition")).create())]

然后您可以利用远程驱动程序中的遍历源:

cluster = Cluster.open('conf/remote-objects.yaml')
graph = EmptyGraph.instance()
sg = graph.traversal().withRemote(DriverRemoteConnection.using(cluster, "sg"))

关于gremlin - Gremlin 中的远程遍历可以使用策略吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44907843/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com