想想一个简单的场景:
用户发布的每篇帖子都有5个标签。现在我可以通过两种方式处理它:
为每个标记创建单独的顶点,并使用post vertex
附加它 postVertex -------- [hastag] ------------> tagNameVertex
将属性添加到postVertex
说'hasTag'
postVertex[hasTag:tagName]
在按标签搜索帖子的情况下哪种方法很好。我想的是,如果1000个用户使用5个不同的标签,那么将只有5000个标签顶点,但在第二种情况下没有新的标签顶点,只是后顶点将使用属性hasTag
处理它。
我们可以使用has()
基于标签进行搜索,因此我认为第二种方法会很好。正确?
答案 0 :(得分:1)
我做的不同。
假设我有一个包含tag1,tag2和tag4的博客。
tag1 = 1 = pow(2, 0);
tag2 = 2 = pow(2, 1);
tag3 = 4 = pow(2, 2);
tag4 = 8 = pow(2, 3);
我将创建一个带有属性标签的顶点,其值为:11(= 1 + 2 + 8)
当我过滤tag2(value = 2)时,我只需要进行二元操作(2& blog-vertex.tags)。
但是存在限制:标签数量应小于1024(在大多数系统中)。
根据您的解决方案,我认为当您拥有大图时,has()
可能效率不高。