1

このようにneo4ノードにインデックスを付けています

BatchInserterIndexProvider indexProvider = new LuceneBatchInserterIndexProvider( db );
logger.info("indexer created :" + indexProvider);
BatchInserterIndex nodeIndexer = indexProvider.nodeIndex( "actors", MapUtil.stringMap("type", "exact"));
nodeIndexer.setCacheCapacity( "name", 100000 );
long indexId = db.createNode(map);
nodeIndexer.add( indexId, map );

ノードを検索するとき、1 つのキーで検索できますが、すべてのキーで検索したいと考えています。

List<Node> nodesList = new ArrayList<Node>();
IndexManager manager = graphDatabaseService.index();
org.neo4j.graphdb.index.Index<Node> nodesIndex = manager.forNodes("actors");
IndexHits<Node> nodes = nodesIndex.query("Associate_Name:*" + pattern + "*");
Node aNode = null;
while (nodes.hasNext()) {
    nodesList.add(nodes.next());
}

return nodesList;

私は試してみましIndexHits<Node> nodes = nodesIndex.query("*:*"+pattern+"*");たが、このかすかな作業です。

すべてのキーを使用して、neo4j でインデックス付きノードを検索する方法を教えてください。

編集: 1 つのキー Associate_Name 検索で --> 指定されたパターンが Associate_Name キーに存在する場合、それらの多くのノードが返されます。

しかし、指定されたパターンが特定のノードのキーのいずれかに存在するかどうかを検索したいと思います。この検索をすべてのノードに対して実行します。どのノードが返すべき値に指定されたパターンを含んでいるのですか。

提案していただきありがとうございますが、私の要件はこのような OR で満たされます

nodesIndex.query("kye1:"+pattern1+" OR key2:"+pattern2+" OR key3_part:"+pattern3_part+"* ")

これはノードを検索する良い方法ですか?

4

1 に答える 1

1

「すべての鍵で」とはどういう意味ですか? キーに関連付けられたすべてのノードを取得したいということですか、それともインデックス内のすべてのノードを取得したいということですか?

キーに関連付けられたすべてのノードを検索するには:nodesIndex.query("Associate_Name:*")

インデックス内のすべてのノードを検索するには:nodesIndex.query("*:*")

于 2013-02-07T05:33:28.047 に答える