【发布时间】:2013-07-05 16:07:39
【问题描述】:
我正在尝试在 Neo4J 图上优化 Gremlin 中的请求。
这是我正在使用的基本请求的简短版本:
g.idx("myIndex")[[myId:5]].outE("HAS_PRODUCT").filter{it.shop_id:5}.inV
所以我研究了索引,并使用键 'shop_id' 在 "HAS_PRODUCT" 类型的边上创建了一个索引。
使用相同的请求,我看不出有什么大的不同。
我的问题是:
当我查询时是否使用了我的新索引:
filter{it.shop_id:5}如果没有,我如何在我的请求中使用这个新索引?
更一般地说,如果
idx(是使用索引的图形方法,那么是否有管道方法呢?
谢谢!
【问题讨论】:
-
我意识到我的回答并没有完全涵盖您的所有问题。要完全回答,我有一个自己的问题。在这种特殊情况下,您知道
shop_id的 ID,它是一个边索引。既然你知道那个值,最好从那里开始你的遍历,因为你知道更有限的 inV/outV 集(我假设myId:5有很多边)?跨度> -
我实际上缩短了我的查询,但主要方案是上面的那个,完整的查询有2个过滤器,总遍历大约5条边。
myId:5没有太多边,它对应一个产品列表。然而,g.idx("by_shopid")[[shop_id:5]]有很多传入的"HAS_PRODUCT"关系。如果我想在该商店中获得与该列表中的产品相对应的产品,我需要从列表遍历到商店(或相反)。从在shop_id上带有索引请求的商店开始将生成孔商店目录,我仍然需要遍历我的列表