Как писать похожие запросы, используя gremlin для Neptune, так как Neptune не поддерживает функцию Lambda - PullRequest
0 голосов
/ 02 июля 2018

Есть ли способ написать подобные запросы, такие как "% match%" в gremlin, без использования лямбда-функций ?.

Нептун не поддерживает лямбда-функции

1 Ответ

0 голосов
/ 03 июля 2018

Обычно есть способы выразить лямбды шагами Гремлин. Действительно, часто лучше сделать это, потому что поставщики графов не могут оптимизировать части ваших запросов, которые содержат лямбда-выражения (поскольку это просто произвольный код).

Как правило, характер лямбда-содержимого определяет, легко ли это выразить шагами Гремлин. Если лямбда-выражение использует стороннюю библиотеку (например, драйвер 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, но на данный момент не было принято никакого решения.

...