私はNeo4jを初めて使用しており、小さなサイトを開発中です。shortestPath関係が正しい方向を反映していません
ノードとノード間の関係を設定しました。ペアになったノードのほとんどは、私は相互リンクを作成しました。
Zeus - FATHER -> Apollo
Appollo - SON -> Zeus
私はこの二つの間の最短経路を見つけるためshortestPath
を使用する:たとえば
MATCH (o1 { name: 'Apollo' }),(o2 { name: 'Zeus' }), p = shortestPath((o1)-[*..6]-(o2)) RETURN nodes(p), relationships(p)
結果は、それが代わりに「SON」の「父」を返すことです。
クエリを[*..6]->(o2)
に変更すると、 "SON"が返されます。
しかし、私は検索で、発信関係のないノードをo1
にすることが考えられます。この場合、上記の変更されたクエリは失敗します。
ので:
- 元のクエリではありません、発信関係を持つノードに対処することができますが、間違った関係を返すことがあります。
- 変更されたクエリは正しい関係(これまでのところ)を返すことができますが、「関係なし」ノードに対処することはできません。
もちろん、問題2を修正するために少なくとも1つの発信関係を持つように変更することはできますが、余りにも冗長になります。
あなたのアドバイスを得ることを願っています。
おかげではなく、Aはの父である場合ので、私はあなたのポイントに同意しませんでしたB、BはAのSONまたはDAUGHTERになります。または、AがBのSONである場合、BはAの父親または母親であり得る。この種の関係は一方向性に過ぎず、相互関係タイプを誘導することはできません。 – TaylorR
rel型 'PARENT_OF'を持つことができ、各ノードには性別を指定できます。 – logisima
これを行うことで、我々はNeo4jを妥協しています。 Neo4jが最も優れている「リンク」をすばやく真っ直ぐに検索するのではなく、追加のプロパティを検索する必要があります。私はそれが良いアイデアだとは思わない。 – TaylorR