だから私は日本語を含む個人的なプロジェクトに取り組んでいます。このプロジェクトでは、Neo4J データベースも使用しています。
私はあなたの専門知識が欲しい非常に独特な問題に出くわしました。
基本的に、DB からいくつかの日本語の文字 (ひらがなと呼ばれる) を取得します。特別なことは何もありません。音節は 1 文字 (「に」、「に」など) または 2 文字 (「にょ」、「にょ」など) で構成されるという事実に基づいて、ひらがなをいくつかのサブカテゴリに分けました。に (に) と よう (よ) から作られます)。
したがって、私のカテゴリには次の構造があります(ここでは少し簡略化されています):
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
これから、次のエラーが発生します。
Don't know how to compare that. Left: Node[496]{value:"にゅ"} (NodeProxy);
Right: Node[498]{value:"にょ"} (NodeProxy)
最初から、同じタイプ (NodeProxy) を持っているように見えるため、DB エンジンがこれらを比較する方法を知らないことに戸惑っています。また、クエリがノードの値を他のノードと比較しようとしていたとは感じません。
とにかく、以前に使用したことがあり、機能したため、クエリの変更を開始しました。しばらく検索した後、return 句でkana.value を itemに変更すると、たとえばkana.value を kanaに変更すると、突然再び機能することに気付きました。
その値をもう少し変更したところ、次の結果が得られました。
- かな.value as item : KO
- kana.value as kana : OK
- kana.value as test : KO
- kana.value as es : KO
- かな.値としての質問: KO
- kana.value ローマ字 : KO
- kana.value ひらがな : KO
- return kana.value : KO
- kana.value as a : KO
- kana.value as kanak : KO
なんらかの理由で、「カナとしてのカナ.値」のみが機能しました...
何が起こっているのか分かりますか?これはバグであり、私のミスではありませんか?
ロイック。
PS:データベースを呼び出すためにphpでgraphawareライブラリを使用していますが、noe4jブラウザでもエラーが発生するため、問題は無関係です