簡體   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