2016-06-21 9 views
2

私はNeo4jプラグインを開発中で、プロパティ値で関係を取得する必要があります。JavaのプロパティでNeo4関係を取得する方法は?

非常に便利な方法を持つNeo4j GraphDatabaseServiceにアクセスできますGraphDatabaseService.findNode(Label label, String property , String value)

私はこのメソッドの関係に相当するものを探しています(GraphDatabaseService.findRelationship(RelationshipType type, String property , String value)など)。

これはありますか?ロードマップにはありますか?別の方法がありますか?

+2

です。これは存在せず、ロードマップにもありません。唯一の方法は、Luceneインデックスを使用してプロパティ値のインデックスを作成することです。あなたはgraphuware-uuidを見て、関係者のためにどのようにしているのか見ることができます。 –

+0

現在のところ、ノードのみがスキーマインデックスでサポートされていますが、それらの周りのノードのコンテキストなしで値によって関係を見つけるユースケースは何ですか? –

+0

Java APIを使用してリレーションシップの手動インデックスにアクセスすることはできますが、プロパティを介してだけでなく、エンドノードのどちらかのコンテキストでもrelを見つけることができるため、かなり優れています。 –

答えて

1

現在、ノードはスキーマインデックスでのみサポートされています。

あなたのユースケースは、周囲のノードの文脈なしに価値によって関係を見つけるケースですか?

Java APIを介してリレーションシップのマニュアルインデックスにアクセスすることはできますが、これは両方ともfind relationshipsのプロパティを経由するだけでなく、エンドノードのどちらかのコンテキストでも行うことができます。 rel-typeごとに1つの索引を作成すると、関係の多いノードでも、開始ノードまたは終了ノードを渡すことで少数をフィルタリングすることができます。 これが私がAPOCプロシージャー・ライブラリーのサポートを追加したものです。

ただし、そのインデックスに手動で関係を追加する必要があります。マイケルとクリストフの答えから総括

+0

マイケルありがとう!私のユースケースはneo4j-to-elasticsearchプラグインです。リレーションシップの索引付けのサポートを追加しています。関係がUUID(リレーションシップがESの検索クエリと一致したとき)によってリレーションシップを取得したいと考えています。 クリストフの答えから、私はちょうどElasticSearchプラグインからUUIDプラグインにアクセスしなければならないと思います。 –

0

:プロパティによって

  • 発見関係を実装されていないスキーマインデックス付きプロパティの値によって関係を見つける

    関連性を取得するには(マニュアルインデックスを使用) UUIDで出荷する場合は、コードは

    public Relationship getRelByUuid(GraphDatabaseService database, String uuid) { 
        UuidReader reader = new DefaultUuidReader(
         getStartedRuntime(database).getModule(UuidModule.class).getConfiguration(), 
         database 
        ); 
        return database.getRelationshipById(uuidReader.getRelationshipIdByUuid(uuid)); 
    } 
    
  • 関連する問題