十年網(wǎng)站開(kāi)發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專業(yè)推廣+無(wú)憂售后,網(wǎng)站問(wèn)題一站解決
這篇文章將為大家詳細(xì)講解有關(guān)如何使用PHP客戶端通過(guò)Neo4j的REST接口進(jìn)行數(shù)據(jù)操作,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

Neo4j是目前最熱門的圖數(shù)據(jù)庫(kù)之一,圖數(shù)據(jù)庫(kù)以計(jì)算機(jī)圖結(jié)構(gòu)為基礎(chǔ),擅長(zhǎng)處理復(fù)雜的數(shù)據(jù)關(guān)系。比如我們常見(jiàn)的社交網(wǎng)絡(luò)中的人與人的關(guān)系圖。
如何使用PHP客戶端通過(guò)Neo4j的REST接口進(jìn)行數(shù)據(jù)操作
我們需要用上面的復(fù)雜SQL語(yǔ)句才能獲取到和KevinBacon一起演出過(guò)的演員名單。
如果我們需要獲取一個(gè)與和KevinBacon一起演出過(guò)的人一起演出過(guò)的演員名單(真拗口)就更麻煩了,再試想多一層,與(與(與KevinBacon一起演出過(guò)的演員)一起演出過(guò)的演員)一演出過(guò)的演員。那幾乎是不可完成的任務(wù)了。
下面我們直接使用Neo4j的PHP客戶端來(lái)構(gòu)建圖譜:
$client=newClient(newTransport('localhost',7474));
//構(gòu)建演員節(jié)點(diǎn)
$keanu=newNode($client);
$keanu->setProperty('name','KeanuReeves')->save();
$laurence=newNode($client);
$laurence->setProperty('name','LaurenceFishburne')->save();
$jennifer=newNode($client);
$jennifer->setProperty('name','JenniferConnelly')->save();
$kevin=newNode($client);
$kevin->setProperty('name','KevinBacon')->save();
怎樣使用PHP客戶端通過(guò)Neo4j的REST接口進(jìn)行數(shù)據(jù)操作
//構(gòu)建電影節(jié)點(diǎn)
$matrix=newNode($client);
$matrix->setProperty('title','TheMatrix')->save();
$higherLearning=newNode($client);
$higherLearning->setProperty('title','HigherLearning')->save();
$mysticRiver=newNode($client);
$mysticRiver->setProperty('title','MysticRiver')->save();
//建立關(guān)聯(lián)關(guān)系
$keanu->relateTo($matrix,'IN')->save();
$laurence->relateTo($matrix,'IN')->save();
$laurence->relateTo($higherLearning,'IN')->save();
$jennifer->relateTo($higherLearning,'IN')->save();
$laurence->relateTo($mysticRiver,'IN')->save();
$kevin->relateTo($mysticRiver,'IN')->save();
然后我們就能夠在已經(jīng)建立好的圖結(jié)構(gòu)上進(jìn)行數(shù)據(jù)查詢了。第一個(gè)查詢是查找所有與KevinBacon距離為12的其它人(演員與演員間的距離只能是2的倍數(shù),因?yàn)橹虚g隔著電影)。
$path=$keanu->findPathsTo($kevin)
->setMaxDepth(12)
->getSinglePath();
foreach($pathas$i=>$node){
if($i%2==0){
echo$node->getProperty('name');
if($i+1!=count($path)){
echo"wasin\n";
}
}else{
echo"\t".$node->getProperty('title')."with\n";
}
}
你也可以用下面的語(yǔ)句查詢所有與LaurenceFishburne相關(guān)的電影:
echo$laurence->getProperty('name')."wasin:\n";
$relationships=$laurence->getRelationships('IN');
foreach($relationshipsas$relationship){
$movie=$relationship->getEndNode();
echo"\t".$movie->getProperty('title')."\n";
}
關(guān)于“如何使用PHP客戶端通過(guò)Neo4j的REST接口進(jìn)行數(shù)據(jù)操作”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。