2014-11-25 75 views
0

我们目前正在评估neo4j作为我们引擎的一部分。 可悲的是,我们的密码查询结果慢得令人无法接受。Neo4J是“获取相关产品”查询的正确选择吗?

所以我们正在考虑从密码转移到java。 难道是创建一个Java插件,它解决了以下问题的可行:以下节点类型中 我们的Neo4j数据库映射关系:

  1. 产品
  2. 标签
  3. 制造商
  4. 客户

我们的neo4j DB中的每个关系都有一定的成本(例如,产品和Tag_1之间的连接可能比t他连接同一产品和Tag_2,这比产品和特定用户之间的连接成本低)。

我们想找到N(10?20?100?)最相似的产品到某个来源产品。
相似性不仅由两个节点之间路径的短小来定义,而且还由源和目标之间有多少路径来定义。

由于使用密码的性能结果非常糟糕,我们开始质疑Neo4J是否是解决此问题的正确工具。 这里所有Neo4J专家的问题:
似乎可以在Java中创建一个小的路径查找算法,该算法还需要计算两个节点之间的路径数量? 我们需要小于100ms(最大!)的响应时间。

我们的Neo4j服务器看起来像这样的时刻:

  • Neo4j的版本:社区2.1.1
  • 节点:650000个
  • 产品节点:550000
  • 性质:8000000
  • 关系:6,000,000
  • 关系类型:9

在此先感谢您的想法。

回答

1

看一看this extension。您可以使用GraphAware Framework和算法扩展,或者查看回购代码并编写您自己的非托管扩展。

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