我目前正在尝试使用 neo4j (v1.9.2) 作为产品推荐工具。
该模型非常简单,包含一些事务,每个事务都使用“包含”关系与产品相关联。
给定产品,以下密码查询返回其他交易中包含的推荐产品。
START product=node(3)
MATCH product-[:CONTAINS]-otherTransaction-[:CONTAINS]->other_product
WHERE product <> other_product
RETURN other_product.number AS productCode,
COUNT(other_product) AS ranking
ORDER BY ranking DESC
查询按预期工作,返回其他推荐的产品,但是,对于大型数据集,它非常慢!使用 JavaAPI 方法而不是 cypher 并没有太大的区别。即使使用 neo4j 服务器也会导致内存不足的问题。
对于如何处理性能问题,我将不胜感激。
- 是否有一种多线程方法来遍历图形?
- 如何将上述密码查询分解为多个子查询,然后整理答案?
- 与其尝试到达与起始产品相关的所有节点,是否应该更改遍历方法?