由于 Neptune 不支持 Lambda 函数,如何使用 gremlin 为 Neptune 编写类似查询

How to write like queries using gremlin for Neptune as Neptune is not supporting the Lambda function

有没有什么方法可以在不使用 lambda 函数的情况下在 gremlin 中编写像“%match%”这样的查询?。

Neptune 不支持 Lambda 函数

通常可以通过 Gremlin 步骤来表达 lambda。事实上,这样做通常更好,因为图形提供者无法优化包含 lambda 的查询部分(因为它只是任意代码)。

通常,lambda 内容的性质决定了它是否可以用 Gremlin 步骤轻松表达。如果 lambda 使用第三方库(例如 JDBC 驱动程序)来抽象一堆复杂的或自定义的行为,那么仅通过 Gremlin 步骤通常无法表达这些概念。

对于像 %match% 这样的字符串比较,TinkerPop 长期以来一直将这种支持留给图形提供者(例如 DSE Graph full text search API)。每个都有自己的表达文本搜索的方式,您可以在您的应用程序中使用这些提供者特定的 API。

正如您所发现的,Neptune 目前没有这样的结构,因此几乎没有办法利用这种能力。如果您真的需要该功能,恐怕您将不得不满足于 startsWith 类型的查询:

gremlin> g = TinkerFactory.createModern().traversal()
==>graphtraversalsource[tinkergraph[vertices:6 edges:6], standard]
gremlin> g.V().has('name',between('m','mz'))
==>v[1]

或选择不同的图形系统。请注意,社区中最近 discussion 提出将基于文本的搜索作为 Gremlin 语言的第一个 class 功能,但目前尚未真正做出决定。