如果文档共享任何公共docid,则可以称为“家庭成员”。
简单Map如下所示:
Docs: docid
1 : a,b
2 : a,c,d
3 : d,e,f
4 : b,g
在表中,该数据如下所示:
1 = a
1 = b
2 = a
2 = c
2 = d
3 = d
3 = e
3 = f
4 = b
4 = g
这里的1,2,3,4文档是一个系列,因为它们有共同点:1和2共享“a”,2和3共享“d”,1和4共享“b”。
我可以通过创建一个单独的表来实现这种分组,并在插入时检查是否存在任何记录,然后将现有值赋给所有docid。
When doc 1 is inserted :
checks any of (a,b) already in family table:
if no:
insert into table and get a famid
因此插入:a=1和b=1行。
对于其他情况,如DOC2情况
: any (a,c,d) exists --> doc 1 has been inserted hence output : a = 1
so take this value and assign to a,c,d (separate entries: a=1, c=1, d=1)and upsert into family table.
所以家族表看起来像:
Docs : docid : famid
1 : a : 1
1 : b : 1
2 : c : 1
2 : d : 1
3 : e : 1
3 : f : 1
4 : g : 1
我想把它作为维护groupby,以便在这种情况下,如果我有doc1,2,3,4,我可以按famid分组并返回这4个文档中的任何一个。
我担心的是,这些docid可能包含手动错误,因此几天后“a”可能会从doc1取消链接,因此从逻辑上讲,docs 2和3不应再是famid 1族的成员,但是family表仍然存储它,因此完整的链会损坏。是否有方法可以存储和维护,以便在删除中的公共节点时取消链接链条。
暂无答案!
目前还没有任何答案,快来回答吧!