Gremlin-搜索多个子字符串

时间:2019-11-10 23:09:51

标签: gremlin janusgraph gremlinpython

对于给定的顶点,我可以发现属性myproperty是否包含单个子字符串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。

2 个答案:

答案 0 :(得分:2)

您可以使用新的文本过滤谓词。在现代样本图上,您可以执行以下操作:

public static void main(String[] args) throws IOException {

    URL url = new URL(" https://webservice.com:1234");
    HttpsURLConnection con = (HttpsURLConnection)url.openConnection();

    con.setRequestMethod("POST");
    con.setRequestProperty("Content-Type", "application/json; utf-8");
    con.setRequestProperty("Accept", "application/json");
    //con.setDoInput(true);
    con.setDoOutput(true);
    String jsonInputString = "\"ID\": \"12\"";

    System.out.println(jsonInputString);

    try(OutputStream os = con.getOutputStream()) {
        byte[] input = jsonInputString.getBytes("utf-8");
        os.write(input, 0, input.length);
        os.flush();
    }
    System.out.println(con.getResponseCode());

答案 1 :(得分:0)

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

g.V(993280096)
    .filter({ it.get().value("myproperty").matches(".* substring1.*|.* substring2.*")})