neo4j能否通过Traversals找到索引最短的n路径?

时间:2011-12-14 09:25:10

标签: neo4j

我从http://docs.neo4j.org/chunked/snapshot/rest-api-traverse.html阅读了wiki api 检查我的代码,我可以通过Traversals找到最短的n个路径,并且可以找到与索引相关的节点或关系。但我的项目有300M节点,当我通过Traversals找到最短的n个路径时,像retionship数据属性名称包含'hi',如果我使用neo4j的fiter方法,它真的很慢,我想使用index(我创建它!),代码像:

  {
      "order" : "breadth_first",
      "return_filter" : {
        "body" : "position.endNode().getProperty('name').toLowerCase().contains('t')",
        "language" : "javascript"
      },
      "prune_evaluator" : {
        "body" : "position.length() > 10",
        "language" : "javascript"
      },
      "uniqueness" : "node_global",
      "relationships" : [ {
        "direction" : "all",
        "type" : "knows"
      }, {
        "direction" : "all",
        "type" : "loves"
      } ],
      "max_depth" : 3
    }

我想:

{
  "order" : "breadth_first",
  "return_filter" : {
    "body" : "position.endNode().name:*hi*",
    "language" : "javascript"
  },
  "prune_evaluator" : {
    "body" : "position.length() > 10",
    "language" : "javascript"
  },
  "uniqueness" : "node_global",
  "relationships" : [ {
    "direction" : "all",
    "type" : "knows"
  }, {
    "direction" : "all",
    "type" : "loves"
  } ],
  "max_depth" : 3
}

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

第一次是慢还是连续请求同样慢?在第一次为该节点/关系请求任何属性时,每个节点/关系都会加载属性,并且您可能会看到性能受到影响。

我认为使用索引可以帮助尚未加载的节点,但不会。在休息时执行此操作可能会非常棘手,因为您必须事先进行索引查找并将该列表传递给评估程序。但这不会扩大规模。相反可以为此写一个扩展名吗?