[英]Find most common shared vertices in OrientDB
我目前正在评估OrientDB(2.1.16)作为构建相似性推荐程序的可能解决方案。 为此,我希望获得一些帮助来编写可完成以下任务的初始查询:
Vertex:Maker -(Edge:Produced)-> Vertex:Item -(Edge:TaggedBy)-> Vertex:Tag
(V1)
并得到一个列表其他项目(Vn)
由标签数目下令共同持有V1
; (V2)
并遍历Items,以获得共享标签的Maker(如果可能,还包括遍历的Items)的有序列表。 以这种方式,没有很多有关交叉应用的详细文档。 没有特别的限制。 将有成千上万的物品和制造者,可能是许多标签的十倍。
我尝试了这个小图示例
我用这个查询
select item.name, count(tag)from (
select from (
MATCH {
CLASS:Item, AS:item, WHERE: (name<>'v1')
}
.out("TaggedBy"){AS:tag}
return item, tag
) where tag in (
select expand(tag) from (
MATCH {
CLASS:Item, AS:item, WHERE: (name='v1')
}.out("TaggedBy"){AS:tag}
return tag
)
)
) group by item order by count desc
我得到了这个结果
希望能帮助到你。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.