0

ノードの自動インデックス作成をオンにすると、必要なプロパティのインデックスが作成されます。Neo4j サーバーを起動して webadmin を開くと、この投稿のように呼ばnode_auto_indexれるインデックスがあることがわかります。これは webadmin から完全に機能し、次のように Cypher クエリを実行できます。

START n=node:node_auto_index('__type:user AND __username:admin') RETURN n

クエリは、私が期待するものを正確に返します。ただし、サーバーをシャットダウンし、Scala アプリケーションから組み込みモードで DB を開くと、これは機能しません。同じ Cypher クエリを実行しようとすると、node_auto_index存在しないというエラーが発生します。GraphDatabaseService のプロパティを確認したところ、適切なキーで自動インデックス作成が実行されていましたが、すべてのインデックス名のリストを取得すると、リストは常に空です。また、AutoIndex API は 1 つのプロパティに対してのみインデックスを作成するため、使用できません。また、間違いなく両方が必要です。

この時点から、Scala (Java) コードから複数のプロパティを使用して自動インデックスをクエリする前に、どのようにするのが最善の方法でしょうか?

編集: ReadableIndex インターフェイス (自動インデックスとは) がクエリ文字列を受け取ることができることに気付きました。ドキュメントがあまり見つからないので、いくつか試してみますが、Cypher クエリを実行できる可能性はありますか? または、上記のクエリの単一引用符で囲まれた文字列だけですか?

4

1 に答える 1

0

queryReadableIndexの関数が実際にLucene Queryを受け取ることがわかりました。これは、上で引用したものであることがわかりました。したがって、このコードを呼び出す:

val nodes = db.index.getNodeAutoIndexer.getAutoIndex.query("__type:user AND __username:admin")

まさに私が欲しかったものをくれました。

于 2013-05-15T15:42:33.240 に答える