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,谢谢你的明确解释。 –