Neo4J是“获取相关产品”查询的正确选择吗?

时间:2014-11-25 08:53:16

标签: performance neo4j path-finding

我们目前正在评估neo4j作为我们引擎的一部分。 可悲的是,我们的密码查询结果令人无法接受。

所以我们正在考虑从密码转向java。 创建一个解决了以下问题的java插件是否可行: 我们的neo4j数据库映射了以下节点类型之间的关系:

  1. 产品
  2. 标签
  3. 制造商
  4. 客户
  5. 我们的neo4j数据库中的每个关系都有一定的成本(例如,产品和Tag_1之间的连接可能比同一产品和Tag_2之间的连接成本更低,这比产品和产品之间的连接成本更低。某些用户)。

    我们希望找到与特定来源产品最相似的N(10?20?100?)产品 相似性不仅由两个节点之间路径的短小来定义,而且还由源和目的地之间的路径数量来定义。

    使用cypher会导致性能极差,我们开始质疑Neo4J是否是解决此问题的正确工具。 这里所有Neo4J专家的问题:
    在Java中创建一个小路径查找算法是否可行,它还计算两个节点之间的路径计数? 我们需要的响应时间小于100毫秒(最大!)。

    我们的neo4j服务器目前看起来像这样:

    • Neo4J版本:community-2.1.1
    • 节点:650,000
    • 产品节点:550,000
    • 属性:8,000,000
    • 关系:6,000,000
    • 关系类型:9

    提前感谢您的想法。

1 个答案:

答案 0 :(得分:1)

看看this extension。您可以使用GraphAware Framework和Algorithms扩展,或者只查看repo中的代码并编写您自己的非托管扩展。

我们在repo中为与您有类似要求的客户端编写了寻路算法 - 将查询时间从几秒缩短到毫秒。