データモデルが実行に失敗しました。だから私は、文章中で使用するすべての単語がグラフの単語のノードとして存在することを知っています。 のNeo4jコンソールで文を作成するために、サイファークエリを実行しようとすると、のNeo4jはエラーを返します:一見簡単なのNeo4j CYPHERクエリが
Found no solution for block with size 7, Stream() were the selected candidates from the table IDPPlanTable(numberOfPlans=95, largestSolved=6)
編集私はそれをより理解するために、クエリで少し周りをいじってきました(に感謝先端!)。それらの一部はまだ動作していません。
MATCH (word8:word {word:'de'}),(word24:word {word:'platen'}),
(word25:word {word:'halen'}),(word26:word {word:'alles'}),
(word27:word {word:'wel'}),(word28:word {word:'weer'}),
(word29:word {word:'voor'}),(word18:word {word:'je'}),
(word30:word {word:'naar'}),(word31:word {word:'boven'}),
(word32:word {word:'als'}),(word33:word {word:'ze'}),
(word3353:word {word:'afspeelt'})
WITH (word8),(word24),(word25),(word26),(word27),(word28),
(word29),(word18),(word30),(word31),(word32),(word33),(word3353)
MERGE (ThisSentence:Sentence {order:3})-[:START]->
(word8)-[nw26:NEXT {sentence:3, word:0}]->
(word24)-[nw27:NEXT {sentence:3, word:1}]->
(word25)-[nw28:NEXT {sentence:3, word:2}]->
(word26)-[nw29:NEXT {sentence:3, word:3}]->
(word27)-[nw30:NEXT {sentence:3, word:4}]->
(word28)-[nw31:NEXT {sentence:3, word:5}]->
(word29)-[nw32:NEXT {sentence:3, word:6}]->
(word18)-[nw33:NEXT {sentence:3, word:7}]->
(word30)-[nw34:NEXT {sentence:3, word:8}]->
(word31)-[nw35:NEXT {sentence:3, word:9}]->
(word32)-[nw36:NEXT {sentence:3, word:10}]->
(word18)-[nw37:NEXT {sentence:3, word:11}]->
(word33)-[nw38:NEXT {sentence:3, word:12}]->(word3353)
WITH ThisSentence MATCH (PrevSentence) WHERE PrevSentence.order=2
MERGE (PrevSentence)-[:NEXT]->(ThisSentence) WITH ThisSentence RETURN ThisSentence
質問:このクエリは失敗します。私が考えてきた
可能な答え:
それは円形に何かがword18周りの関係を作成することがあります。
- 29-> 18-> 30
- 32> 18-> 33 :あなたが見ることができるように、それはすべてがお互いと異なり、入ってくる2および発信2を作成し、クエリで2回使用されて
どうすればこの問題を防ぐことができますか?
Neo4jバージョンは3.0.6 CEです。
単語の条件を 'WHERE'節から' MATCH'節に移動しようとしましたか?たとえば、 'MATCH(word0:word {word: 'albums'})、...'とします。パフォーマンス面では違いはありません(しかし、これは 'PROFILE'でチェックする価値があります)。また、読みやすさを向上させると思います。 –
ガーボーありがとう!私はwhere句を完全に削除しました。これははるかにきれいです。私はまだいくつかのクエリを実行するのに問題があります。 – Stefan
2番目の一致 'WITH ThisSentence MATCH(PrevSentence)WHERE PrevSentence.order = 2'では' PrevSentence'を特定の型(例えば ':Sentence')にバインドせず、' order'をフィルタリングします。これはおそらく大きなグラフで評価するのが遅いでしょう。別のマイナーな提案:最初の 'MATCH'の後の' WITH'節は不要です。あなたのクエリに必要なノードだけで[サンプルグラフ](https://gist.github.com/szarnyasg/f1631cf4f4cfdc3b304204bc094bc4ad)を作成しました。空のデータベースでうまく動作しました。空のデータベースで実験できますか?たぶん[GrapheneDB](http://www.graphenedb.com/)? –