2017-11-27 4 views
3

SDN 5のダイナミックな@Propertiesを適切にインデックスするにはどうしたらいいですか?Spring Data Neo4j 5と@Index for dynamic @Properties

は、次のプロパティ宣言作業はウィル:

@Index(unique = false) 
@Properties(prefix = NAME_PROPERTY_PREFIX) 
private Map<String, String> nameProperties = new HashMap<>(); 

namePropertiesマップの内部のすべてのプロパティのキーは個別に索引されるのですか?記述してください。

答えて

3

この機能はサポートされていません。インデックスを作成すると、自動インデックスが有効になっていると、アプリケーションの開始時にクラスがスキャンされるためです。クラスがスキャンされたときに発見される既知のフィールド(マップキー)がないため、インデックスは作成されません。

また、上記のサンプルを試したときに、プロパティフィールド名(nameProperties)の無駄なインデックスが作成され、これはNeo4jでは使用されませんでした。

+0

あなたの答えをありがとう。前述のアプローチで動的プロパティを使用してインデックスを作成するためのオプションはありますか? – alexanoid

+0

シーンの背後にある主なアイデアは、あらゆる言語をサポートするためにアプリケーションをローカライズすることです。現在のところ、私は 'String name'プロパティだけを宣言していますが、ユーザーにはどんな言語でも許可したいと思っています。これらの言語のセットは今は分かりません。たとえば、' name_en'、 'name_fr'、 name_it'など...そういうわけで、私はこの目的のために動的プロパティを使いたいのです。 – alexanoid

+1

この特定のプロパティのインデックスを作成することは本当に必要ですか?それは私にとっては何とか間違っているかもしれません。索引の基本的な考え方は、グラフをトラバースするための「高速」エントリを提供することです。あなたの設定では、翻訳された値を検索することによってすべての国際化されたノードを照会します。これが本当に必要な場合は、いくつかの言語を明示的にサポートすることです(考えてみましょうか、サポートする言語がたくさんある場合はこれが良いモデリング手法であり、ノードの翻訳を保持する言語ノードを追加してください。) – meistermeier

関連する問題