Neo4j/Cypherを使用すると、1つのタイプのラベル(:郡)のみで構成されるかなり小さなデータセット(290ノード)が得られます。プロパティの計算に基づくグループノード
プロパティは次のようになります。County({countyCode、countyName、population})。 には次のようなインデックスがあります:County.countyCode
それぞれ:郡は1 + Nその他の国に関連しています:郡:関係:ADJACENT_TO。
私が達成しようとしているのは、母集団プロパティの所与の値に合った郡の組み合わせを見つけることです(最小100000、最大120000)。
以下のクエリでは、私はペアを見つけるまでは得ましたが、3つ以上の郡の組み合わせは見つかりませんでした。
MATCH x = (a:County)-[:ADJACENT_TO]->(b:County)
WHERE reduce(totalPopulation = 0, n IN nodes(x)| totalPopulation + n.population) >= 100000
AND reduce(totalPopulation = 0, n IN nodes(x)| totalPopulation + n.population) <= 120000
RETURN x, b.countyName, a.countyName,
reduce(totalPopulation = 0, n IN nodes(x)| totalPopulation + n.population) AS reduction
究極の目標は、与えられた基準内に収まる1つの... N郡、即ち、のユニークな組み合わせを見つけることである:郡(Y)と:郡(x)はと組み合わされている郡(Z)郡(v)とは異なる組み合わせで接続されている可能性があります。
「コア」郡が直接指定されていない組み合わせでは、どの郡も存在できません:ADJACENT_TO指定された郡。
私は途中で私を助けるための任意の答えとポインタをありがとうと思います。
EDIT: 検索の多くの後、私は私が達成したいことは、「クラスター分析」と呼ばれていることを考えるが、私は(私は上記の基と呼んだもの)クラスタを作成する方法を見つけ出すことができませんでしたしたがって、分析はまださらに一歩進んでいます。たぶん用語は、私が何をしているのかを明確にするのに役立ちます。
をwanted-結果を見つけるために、CYPHERでのNeo4jを照会するための方法を見つけることができませんでした「コア」郡とは何ですか?このグループ化をどのように機能させるかの例を挙げることができますか? – cybersam
私は、Cypherだけで、入力リストのすべての可能な組み合わせを生成する方法を認識していませんが、APOCプロシージャへの機能要求として追加しました。あなたの要求の難しい部分は、別の都市で使用されている組み合わせに基づいて、ある都市の組み合わせを制限することだと思います。それは間違いなく再審査、またはその制限がどのように機能すべきかを定義するより良い要件を必要とします。最初に最初に来る? – InverseFalcon
申し訳ありませんが、あなた自身の世界で盲目になるのはとても簡単です。 「コア」郡は、その組み合わせの他のすべての郡に隣接する郡です。 A、B、C郡があるとします。AはBとCの両方に隣接していますが、BとCは必ずしも隣接していません。その後、Aは「コア」郡になります。 –