1
我索引neo4節點這樣如何搜索索引節點的Neo4j
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);
同時搜索節點,我能夠一個鍵搜索,但我想在所有的鍵進行搜索。
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中搜索索引節點。
編輯:使用一個關鍵Associate_Name搜索 - >如果給定模式存在於Associate_Name鍵中,那麼將返回那些多個節點。
但我想搜索給定的模式是否存在於特定節點的任何Key中,對所有節點執行此搜索,哪些節點包含應返回的任何值中的給定模式。
感謝您的建議,但我的要求將與OR這樣
nodesIndex.query("kye1:"+pattern1+" OR key2:"+pattern2+" OR key3_part:"+pattern3_part+"* ")
履行是搜索節點這種好辦法嗎?
並且如果你正在尋找一個節點上的所有鍵:
nodesIndex.query("Associate_Name:*")
要在一個索引搜索所有節點'nodesIndex.query( 「kye1:」+ pattern1 +「AND key2:」+ pattern2 +「AND key3_part:」+ pattern3_part +「*」)' – ulkas
我想他的意思是他想搜索每一個相同模式的密鑰,但他不想必須單獨指定每個密鑰。因此,如果他的節點有五個屬性,他希望指定類似於'query(「*:* mySearchpattern *」)''和'* mySearchPattern *'的所有五個屬性。 – ean5533
正確@ ean5533,謝謝你的明確解釋。 –