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 );

在搜索节点时,我可以用一个键搜索,但我想搜索所有键。

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 键中存在给定模式,则将返回那些许多节点。

但是我想搜索给定模式是否存在于特定节点的任何键中,对所有节点进行此搜索,哪些节点包含任何应该返回的值的给定模式。

感谢您的建议,但我的要求将满足 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 回答