0

对于给定的顶点,我可以找到一个属性是否myproperty包含单个substring substring1,如下所示:

g.V(993280096)
    .filter({it.get().value("myproperty").contains("substring1")})

如何扩展它以在同一查询中搜索多个子字符串?

类似于以下内容:

g.V(993280096)
    .filter({ it.get().value("myproperty")
                .contains(or("substring1", "substring2"))})

有没有更好的方法来代替使用 lambda 表达式?请注意,我不想使用内置的图形数据库(在我的情况下为 JanusGraph),因为我使用的是 gremlin-python。

4

2 回答 2

2

您可以使用新的文本过滤谓词。例如,在现代示例图中,您可以这样做:

gremlin> TinkerFactory.createModern().traversal().V().
           has("name", containing("ark").or(containing("os"))).values("name")
==>marko
==>josh
于 2019-11-11T18:02:10.247 回答
0

就在发布之后,我确定了一个解决方案(尽管我不知道这是否是最好的方法)使用matches而不是contains

g.V(993280096)
    .filter({ it.get().value("myproperty").matches(".* substring1.*|.* substring2.*")})
于 2019-11-10T23:13:40.403 回答