2016-07-13 1 views
1

私は日本語を含む個人的なプロジェクトに取り組んでいます。このプロジェクトでは、Neo4Jデータベースも使用しています。Cypherエラー:「それをどう比較するか分からない」考えられるバグ?

あなたの専門知識が欲しいという非常に特殊な問題が発生しました。

基本的には、私のDBからいくつかの日本語の文字(ひらがなと呼ばれる)を検索します。特別なことは何もありません。私は、1つの文字(例えば 'に'、 'ni')または2つ(例えば、 'ょ'、 'nyo'など)で構成されているという事実に基づいて、いくつかのサブカテゴリでひらがな文字を分離しました。 ni(に)とyo(よ)から作られた)。

だから私は自分のカテゴリに(ここでは単純化ビット)以下の構造を有する:

Hiragana ------- Single character hiragana (like に) 
      |--- Double character hiragana (like にょ) 

これらの各カテゴリは、ひらがな値(のようにまたはにを含むノード(ここではアイテムと呼ばれる)にリンクされているょ)。 。これらの文字を取得するには、私はひらがな 『「私のリストのサブリストに属しているすべての文字を与える』ように聞こえるクエリを作る実際のコードは特別なものではありませんし、このように書き:このことから

match(list:item_list)-[:sub_list*0..]->(sublist)-[:list_item]->(kana:item)-[:romaji]->(romaji:item) 
where list.name =~'(?i)Hiragana' 
return kana.value as item, romaji.value as answer ORDER BY kana asc 

、私は、彼らが同じタイプ(NodeProxy)を持っているように見えるので、DBエンジンは、これらを比較する方法を知らないことに困惑だけど、最初から

Don't know how to compare that. Left: Node[496]{value:"にゅ"} (NodeProxy); 
Right: Node[498]{value:"にょ"} (NodeProxy) 

また、私ドン:私は次のエラーを取得します。クエリが他のノードとノードの値を比較しようとしていたと感じていません。

とにかく、私は前にそれを使用していたので、私は、クエリを変更し始めた。しばらく検索した後、復帰句で、私が変更した場合、kana.valueとして項目に、kana.valueをかなとしてと言いましょう。突然再び動作します。

は、私はいくつかのより多くのその値を変更し、以下の結果得た:アイテムとして

  • kana.value:KOカナなど
  • kana.value:テストとしてOK
  • kana.valueを: ESとしてKO
  • kana.value:KOローマ字として
  • kana.value:KO質問など
  • kana.value:ひらがなとしてKO
  • kana.value:KO
  • 戻りkana.value:カナックとしてKO
  • kana.value:KOとして
  • kana.value KO

だから、唯一の「カナ。値をかなとして "働いた理由は何でも...

あなたは何が起こっているか考えていますか?これはバグであり、自分のミスではありませんか?

Loïc。

PS:私は、データベースを呼び出すためにPHPでgraphawareライブラリを使用しますが、エラーはまた、私は、この問題の根本的な原因を見つけることができませんでした

答えて

0

noe4jブラウザで起こるような問題は、無関係ですが、私は回避策を見つけた。

私はこの問題を未解決のまま残すことに満足していませんが、これ以上必要以上に時間を費やしたくないので、皆さんもこれで時間を失うことはありません。

回避策

だから何私がしたことは私のクエリの一部を変更することでした。代わりに「kana.valueを」「カナを」ノードを命名して返すので、私は「文字」に名前を変更し、私は今、「character.value」を返します。

それは動作します、なぜ私に尋ねないでください。

旧クエリ:

match(list:item_list)-[:sub_list*0..]->(sublist)-[:list_item]->(kana:item)-[:romaji]->(romaji:item) 
where list.name =~'(?i)Hiragana' 
return kana.value as item, romaji.value as answer ORDER BY kana asc 

新しいクエリ:

match(list:item_list)-[:sub_list*0..]->(sublist)-[:list_item]->(character:item)-[:romaji]->(romaji:item) 
where list.name =~ '(?i)Hiragana' return character.value as item, romaji.value as answer 

よろしく、

ロイック。

関連する問題