Полный список шагов Gremlin, поддерживаемых CosmosDB, можно найти здесь .Стоит уточнить, что TinkerPop изначально не поддерживает регулярные выражения.Вы можете сделать это только через лямбда-выражение с шагом filter()
:
gremlin> g = TinkerFactory.createModern().traversal()
==>graphtraversalsource[tinkergraph[vertices:6 edges:6], standard]
gremlin> p = Pattern.compile("(marko|j.*h)")
==>(marko|j.*h)
gremlin> g.V().values('name').filter{p.matcher(it.get()).matches()}
==>marko
==>josh
Хотя это работает, я не знаю ни одного графика, который бы оптимизировал этот конкретный обход (т.е. он не будет индексным)основан).Фактически, ни один граф не оптимизирует лямбду - это произвольный код, который граф просто выполнитВам нужно будет найти графики, которые изначально поддерживают регулярные выражения или какую-либо форму полнотекстового поиска.Единственные, кого я знаю, которые имеют такую поддержку в самой Gremlin, это JanusGraph и DSE Graph .Другие графики изначально имеют такую поддержку, но она не обязательно представлена таким образом, чтобы ее можно было использовать непосредственно в Gremlin.
TinkerPop - это добавление встроенной поддержки текстовых предикатов теперь, когда больше графиков, кажется, поддерживают эту функцию, и шаблон для этого является относительно непротиворечивым.Мы должны увидеть это в TinkerPop 3.4.0, когда она выйдет.