Gremlin - поиск нескольких подстрок - PullRequest
0 голосов
/ 11 ноября 2019

Для заданной вершины я могу найти, содержит ли свойство myproperty одну подстроку substring1, вот так:

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

Как расширить это для поискадля нескольких подстрок в одном запросе?

Что-то вроде:

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

И есть ли лучший способ сделать это вместо использования лямбда-выражений? Обратите внимание, что я не хочу использовать встроенную базу данных графа (в моем случае JanusGraph), потому что я использую gremlin-python.

Ответы [ 2 ]

2 голосов
/ 11 ноября 2019

Вы можете использовать новые предикаты текстового фильтра. На современном примере графика вы можете сделать это, например:

gremlin> TinkerFactory.createModern().traversal().V().
           has("name", containing("ark").or(containing("os"))).values("name")
==>marko
==>josh
0 голосов
/ 11 ноября 2019

Сразу после публикации я определил решение (хотя я не знаю, является ли это лучшим способом), используя matches вместо contains:

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