【发布时间】:2014-09-15 10:14:14
【问题描述】:
我是 Gremlin 的新手。看到Answer from stephen mallette,这是来自相同答案的代码
g.v('u1','u2').out('like').groupCount().cap.next().sort{-it.value}
如何改进此查询以根据喜欢对具有type=Camera 的产品进行排序。考虑每页 10 条记录的分页。显示大量产品的排序结果会是一种有效的解决方案吗?
【问题讨论】:
我是 Gremlin 的新手。看到Answer from stephen mallette,这是来自相同答案的代码
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 时,您有比大多数图表更多的选项来解决这个问题(如果它确实是一个问题 - 我建议您生成测试数据并编写一些查询来确定)。您可能要做的一件事是将“类型”属性非规范化为“喜欢”边缘,以便您可以在outE 上应用您的“类型”过滤器,而不是强制遍历out,如上所示(强制遍历意味着Titan 需要找到边缘另一端的顶点,这增加了 Titan 需要检索的数据量)。您可以阅读更多关于这些选项的信息here。
【讨论】:
type 非规范化到likes 边缘,那么你会做更多类似的事情:g.v('u1','u2').outE('like').has('type','camera').inV.groupCount().cap.next().sort{-it.value}
v.query().direction(Direction.IN).labels("inEdge").has("inEdgeProperty", "XXXXX").vertices().iterator() 然后迭代它为has('vertexProps''xyz') 分开
GremlinPipeline 的 titan。是否符合泰坦标准