1

我无法让索引查找与 PHP API 客户端一起使用。

首先,正在创建一个节点并为其编制索引。这工作正常。然后当我测试查找

curl -H Accept:application/json http://localhost:7474/db/data/index/node/my_nodes/guid/108

我得到:

[ {
  "indexed" : "http://localhost:7474/db/data/index/node/my_nodes/guid/108/57",
  "outgoing_relationships" : "http://localhost:7474/db/data/node/57/relationships/out",
  "data" : {
    "guid" : 108,
    "title" : "New User ABC",
    "owner_guid" : "2"
  },
  "traverse" : "http://localhost:7474/db/data/node/57/traverse/{returnType}",
  "all_typed_relationships" : "http://localhost:7474/db/data/node/57/relationships/all/{-list|&|types}",
  "property" : "http://localhost:7474/db/data/node/57/properties/{key}",
  "self" : "http://localhost:7474/db/data/node/57", .... 

到目前为止,一切都很好。但是,当我在 PHP API 客户端中定义如下函数来执行查找时。

public function getNodeByKey ($key, $value) 
{ 
    $uri = $this->base_uri . 'index/node/my_nodes/' . $key . '/' . $value ;
    list($response, $http_code) = HTTPUtil::jsonGetRequest($uri); 
    if ($http_code == 200) 
        return Node::inflateFromResponse($this, $response);
    else { 
        throw new HttpException($http_code);
    } 
}

以下是如何调用上述函数:

$graphDb = new GraphDatabaseService('http://localhost:7474/db/data/');
...
$node = $graphDb->getNodeByKey ('guid', $uid);              
$relationship = $node->createRelationshipTo($another_node, 'works with');
$relationship->save();

我从 getNodeByKey() 得到 200 的 HTTP 响应。但是,当我尝试保存关系时,我得到一个 404。我尝试使用 dump_node() 进行测试,并且我尝试查找的节点即 $node 为空。我无法弄清楚哪里出错了。任何指针?

在此先感谢,南达

4

2 回答 2

0

南达,根据http://docs.neo4j.org/chunked/snapshot/rest-api.html,您是否也可以尝试使用curl获取索引节点?

于 2011-06-09T09:46:09.463 回答
0

我终于能够使用 PHP API 客户端让它工作。我不得不将函数 inflateFromResponse 修改为以下内容。我不确定它是否与正在使用的 neo4j 版本有关(即 1.2)

public static function inflateFromResponse($neo_db, $response)
{

    $node = new Node($neo_db);
    $node->_is_new = FALSE;
    $node->_id = end(explode("/", $response[0]['self']));
    $node->setProperties($response[0]['data']);

    return $node;
}
于 2011-06-10T04:12:53.150 回答