以下、私のコンテキストの概念的な例:
次の名前の抽象クラスがあります: (文字列としてプロパティをUser
含む)
次の名前のサブクラスがあります:
次の名前のサブクラスがあります:id
User
FacebookUser
User
TwitterUser
Spring-Data-Neo4j を使用してUser
、@NodeEntity
.
FacebookUser
aと aTwitterUser
をグラフに挿入するために、テスト クラスを作成します。
全体がうまくいきます => 両方のノードが挿入され、サブクラスの完全修飾名を含む_ type _があります。
例: com.myApp.model.user.FacebookUser
.
ここで、この種の暗号クエリを作成したいと思います:
ID = 123 のユーザーを取得するしたがって、一意の対応するレコードを見つけるために、
すべてのユーザー ノード ( と の和集合) をチェックするより効率的な方法を見つける必要FacebookUser
があります。 TwitterUser
.
私は、次のように暗号化するように指示する方法を見つけることを期待してい
ましFacebookUser
たTwitterUser
:
しかし、私は管理しませんでした。
私の現在のクエリは、次のとおりです。
@Query("start u=node(*) where has(u.__type__) and u.__type__ =~ '.*User' and has(u.id) and u.id = {0} return u")
これは次のように翻訳されます。
グラフ内のすべてのノードを確認し (まったく効率的ではないと思います)、「User」で終わるノード (FacebookUser と TwitterUser を含む) を保持し、権利を確認します。id
この場合、グラフ全体をスキャンする代わりに、インデックス ノードのみを使用する方法はありますか?
_ type _プロパティの名前を親クラスの完全修飾名に 変更する方法を考えていました。
SDNで簡単にできる?
実際、SDN はノードに関連付けられた Java クラス名をノードのインデックス名として使用しているように見えるため、Facebook と Twitter の両方のサブタイプに対して 1 つのインデックス ノード (ユーザーインデックス ノード) のみを処理できます。