Gremlin - поиск нескольких подстрок

Для данной вершины я могу определить, 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 ответа

Решение

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

gremlin> TinkerFactory.createModern().traversal().V().
           has("name", containing("ark").or(containing("os"))).values("name")
==>marko
==>josh

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

g.V(993280096)
    .filter({ it.get().value("myproperty").matches(".* substring1.*|.* substring2.*")})
Другие вопросы по тегам