1

我目前正在尝试使用 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 服务器也会导致内存不足的问题。

对于如何处理性能问题,我将不胜感激。

  1. 是否有一种多线程方法来遍历图形?
  2. 如何将上述密码查询分解为多个子查询,然后整理答案?
  3. 与其尝试到达与起始产品相关的所有节点,是否应该更改遍历方法?
4

1 回答 1

0

reco4j 方法和对 neo4j 的直接查询之间的主要区别在于,在我们的软件中,我们构建了数据模型并存储了新信息,以加快推荐过程。另一方面,创建模型需要一定的时间,但之后您应该能够以毫秒为单位执行预测。

于 2013-08-26T13:28:28.487 回答