繁体   English   中英

在OrientDB中查找最常见的共享顶点

[英]Find most common shared vertices in OrientDB

我目前正在评估OrientDB(2.1.16)作为构建相似性推荐程序的可能解决方案。 为此,我希望获得一些帮助来编写可完成以下任务的初始查询:

Vertex:Maker -(Edge:Produced)-> Vertex:Item -(Edge:TaggedBy)-> Vertex:Tag
  1. 我想选择一个特定的项目(V1)并得到一个列表其他项目(Vn)由标签数目下令共同持有V1 ;
  2. 通过扩展,我想选择一个Maker (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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM