如何将HashMap转换为Closure for Titan过滤器

时间:2015-09-26 00:08:52

标签: groovy titan gremlin

我使用的是Gremlin 2.5.0 / Groovy 2.3.7。

我有一个hashMap,它包含我想要过滤的参数/值的键值对。例如,我有

[param1:val1, param2:val2:, param3:val]

我想要进行的查询类型是:

g.V.filter{it.param1=='val1' && it.param2=='val2' && it.param3=='val3'}

使用hashMap进行查询是否有直接的Gremlin / Groovy方法?

2 个答案:

答案 0 :(得分:2)

在可能的情况下,您应该避免在Gremlin中使用filter,尤其是使用Titan和大型图表。使用filter将阻止Titan正确使用指数。您应该尽可能使用has

我会尝试使用您的Map

构建管道
gremlin> g = TinkerGraphFactory.createTinkerGraph()  
==>tinkergraph[vertices:6 edges:6]
gremlin> params = [name:'josh',age:32]               
==>name=josh
==>age=32
gremlin> pipeline = g.V();null                       
==>null
gremlin> params.each{k,v->pipeline=pipeline.has(k,v)}
==>name=josh
==>age=32
gremlin> pipeline                                    
==>v[4]

答案 1 :(得分:1)

我不知道过滤器闭包中可接受的是什么,但这可能有效。

DataTransferManager.ShowShareUI()