什么时候应该选择Neo4j的遍历框架而不是Cypher?
例如,对于朋友的朋友查询,我会写一个Cypher查询,如下所示:
MATCH (p:Person {pid:'56'})-[:FRIEND*2..2]->(fof)
WHERE NOT (p)-[:FRIEND]->(fof)
RETURN fof.pid
Run Code Online (Sandbox Code Playgroud)
并且相应的遍历实现将需要两次遍历friends_at_depth_1和friends_at_depth_2(或核心API调用以获取关系)并使用普通java构造在遍历描述之外找到这两个集合的差异.如果我在这里错了,请纠正我.
有什么想法吗?
我使用Apyori库作为 Apriori 算法的实现。
rules = apriori(trs, min_support = 0.02, min_confidence = 0.1, min_lift = 3)
rules是一个生成器,可以转换为一个列表res=list(rules)。对于大型数据集,list(rules)似乎需要很长时间。
您能否帮助我了解规则是否按某种标准排序,以便我只能检索前 n 个最相关的规则?或者,例如,rules按排序的最有效方法是什么lift。
这是典型输出的样子(即列表中的元素):
RelationRecord(items=frozenset({'chicken', 'light cream'}),
> support=0.004532728969470737,
> ordered_statistics=[OrderedStatistic(items_base=frozenset({'light cream'}),
> items_add=frozenset({'chicken'}),
> confidence=0.29059829059829057, lift=4.84395061728395)])
Run Code Online (Sandbox Code Playgroud) 在Neo4j的neo4j-2.2.0-M03版本中,当我尝试导入时
import org.neo4j.cypher.javacompat.ExecutionEngine; 和
import org.neo4j.cypher.javacompat.ExecutionResult;
我收到了一个弃用的警告.我似乎无法找到我应该使用的包...