Gremlin 需要改进小精灵查询吗

Gremlin 需要改进小精灵查询吗,gremlin,titan,Gremlin,Titan,我是小精灵的新手。这是同一答案的代码 g.v('u1','u2').out('like').groupCount().cap.next().sort{-it.value} 如何改进此查询以根据喜好对具有type=Camera的产品进行排序。考虑每页有10条记录的分页。显示大量产品的排序结果是否是一种有效的解决方案?您只需应用过滤器即可获得所需的产品类型: g.v('u1','u2').out('like').has('type','camera').groupCount().cap.next(

我是小精灵的新手。这是同一答案的代码

g.v('u1','u2').out('like').groupCount().cap.next().sort{-it.value}

如何改进此查询以根据喜好对具有
type=Camera
的产品进行排序。考虑每页有10条记录的分页。显示大量产品的排序结果是否是一种有效的解决方案?

您只需应用过滤器即可获得所需的产品类型:

g.v('u1','u2').out('like').has('type','camera').groupCount().cap.next().sort{-it.value}
以这种方式进行排序/分页可能有效,也可能无效。我想这取决于你和多少人打交道。数千可能不是什么大不了的事,但数十万可能比你能忍受的要少


当您使用Titan时,您有比大多数图形更多的选项来解决此问题(如果它确实是一个问题-我建议您生成测试数据并编写一些查询以确定)。您可能要做的一件事是将“type”属性反规范化为“like”边,这样您就可以在
outE
上应用“type”过滤器,而不是强制遍历
out
,如上所示(强制遍历意味着Titan需要在边的另一端找到顶点,这增加了Titan需要检索的数据量)。您可以阅读有关这些选项的更多信息。

您是说我应该使用边“like”而不是“only not”类型吗属性。如果你像我建议的那样将
type
反规范化为
likes
边,那么你会做一些更像:
g.v('u1','u2')。outE('like')。has('type','camera')。inV.groupCount().cap.next()。sort{-it.value}
我会试试这个。在《泰坦》中,我是通过java使用的,我看到它的查询与gramlin相比有点复杂。例如pipe.start(v).inE(“inEdge”).has(“inEdge属性”,“XXXXX”).outV().has('vertexProps“xyz”)`在《泰坦》中首先使用java
v.query().direction(direction.In)。标签(“inEdge”).has(“inEdge属性”,“XXXXX”).vertexts()。迭代器()
然后分别迭代
has('vertexProps''xyz')
Gremlin比较低级别的Titan/Blueprints API更具表现力,因此一般来说,随着时间的推移,Gremlin将导致更少的代码、更可读的代码和更好的可维护性。我们可以使用java使用Gremlin,使用Titan使用
GremlinPipeline
。它是否符合Titan标准