人を表すノードがある大きなグラフがあります。それらはすべてfirstnameとsurnameのプロパティを持ち、いくつかはmiddlenameプロパティを持っています。私は同じ人を表す可能性のあるノードを探しているので、異なる名前の順列を見ています。私は現在、姓と最初の頭文字の頭文字を比較しています(いくつかのノードには頭文字があるだけです)がある場合、中札のテスト方法を理解することはできません。Neo4j Cypher - 存在する場合はプロパティ値を比較しますか?
私の現在のクエリは次のとおりです。
match (a:Author), (b:Author)
where
a.surname=b.surname and
(a.firstname starts with 'A' and b.firstname starts with 'A')
return distinct a,b
私の理解ではOPTIONAL MATCHは、パターンのみを指していることなので、それは動作しません。私は理にかなっているif文を書く方法を見つけることができません。
それはそれは私ではなく、直接サイファークエリにだけ頼るより、プログラムでこれを行うために、より理にかなっていることかもしれないが、私は本当にそれをシンプルに保つだけサイファーでそれを行うには期待していました。
私がしたいことを明確にするための例です。
例1:
Node 1: firstname "John" middlename "Patrick" lastname "Smith"
Node 2: firstname "J" middlename "P" lastname "Smith"
Node 3: firstname "J" middlename "Q" lastname "Smith"
Node 4: firstname "J" lastname "Smith"
I 'がマッチング' としてノード1,2、および4が返されたクエリをしたいです。
例2: '標準的な' 名前がミドルネームを持っていないので、ここで
Node 1: firstname "Jane" lastname "Smith"
Node 2: firstname "J" middlename "P" lastname "Smith"
Node 3: firstname "J" middlename "Q" lastname "Smith"
Node 4: firstname "J" lastname "Smith"
は、私は、すべての4つのノードをしたいです。私はあなたが以下のようなものが必要だと思う
あなたがより明確に、それはあなたが「ミドルネームをテストする方法を見つけ出すことはできませんので、やろうとしているが何であるかを明らかにすることをお勧めしますもし存在するならば、あなたに「存在」を使ってダウン投票してもらうように言われました。 – joslinm
ありがとう、うまくいけば、私の拡張された例がより明確になります。 FWIW、私はあなたにdownvoteしなかった。私にとって、あなたのコメントは、私が解決しようとしていた問題を明確に説明していない兆候でした。 – betseyb