Обычно есть способы выразить лямбды шагами Гремлин. Действительно, часто лучше сделать это, потому что поставщики графов не могут оптимизировать части ваших запросов, которые содержат лямбда-выражения (поскольку это просто произвольный код).
Как правило, характер лямбда-содержимого определяет, легко ли это выразить шагами Гремлин. Если лямбда-выражение использует стороннюю библиотеку (например, драйвер JDBC), которая абстрагирует множество сложных или нестандартных поведений, то выражение таких понятий обычно невозможно только с помощью шагов Gremlin.
Для сравнения строк, например %match%
TinkerPop уже давно предоставляет такую поддержку поставщикам графиков (например, API полнотекстового поиска в графике DSE ). Каждый из них имеет свой собственный способ выражения текстового поиска, и вы будете использовать эти API-интерфейсы для конкретных поставщиков в своих приложениях.
Как вы выяснили, у Нептуна в настоящее время нет таких конструкций, поэтому для этой возможности мало возможностей. Если вам действительно нужна эта функция, я боюсь, что вы будете удовлетворены запросом типа startsWith
:
gremlin> g = TinkerFactory.createModern().traversal()
==>graphtraversalsource[tinkergraph[vertices:6 edges:6], standard]
gremlin> g.V().has('name',between('m','mz'))
==>v[1]
или выберите другую систему графиков. Обратите внимание, что в последнее время в сообществе обсуждается о том, чтобы сделать поиск на основе текста первоклассной особенностью языка Gremlin, но на данный момент не было принято никакого решения.