我目前正在评估OrientDB(2.1.16)作为构建相似性推荐器的可能解决方案。为此,我非常乐意帮助编写一个初始查询来完成以下任务:
Vertex:Maker -(Edge:Produced)-> Vertex:Item -(Edge:TaggedBy)-> Vertex:Tag
(V1)
并获取其他项目(Vn)
的列表,这些项目按照与V1
共享的标记数量排序; (V2)
并遍历项目以获得共享标签的制造商(以及可能的遍历项目)的有序列表。以这种方式没有关于交叉应用的大量详细文档。没有特别的限制。将有数千个项目和制造商,可能是许多标签的10倍。
答案 0 :(得分:0)
我尝试了这个小图表示例
我使用了这个查询
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
我得到了这个结果
希望它有所帮助。