1

有没有什么方法可以在不使用 lambda 函数的情况下在 gremlin 中编写类似于 '%match%' 的查询?

Neptune 不支持 Lambda 函数

4

1 回答 1

2

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

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

对于像 TinkerPop 这样的字符串比较,%match%长期以来一直将这种支持留给图形提供者(例如DSE Graph 全文搜索 API)。每个都有自己的文本搜索表达方式,您可以在应用程序中使用这些提供程序特定的 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 语言的一流功能,但目前还没有真正做出决定。

于 2018-07-03T12:19:00.893 回答