Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Neo4j-返回错误节点的密码查询_Neo4j_Cypher - Fatal编程技术网

Neo4j-返回错误节点的密码查询

Neo4j-返回错误节点的密码查询,neo4j,cypher,Neo4j,Cypher,在尝试使用cypher中的自动索引查询节点时,它会返回不相关的节点, 如下所示,我查询了contno='GESU5697150'的节点,但它也返回了一些其他节点 neo4j-sh (0)$ start n=node:node_auto_index(contno='GESU5697150') return n; ==> +----------------------------------------------------+ ==> | n

在尝试使用cypher中的自动索引查询节点时,它会返回不相关的节点, 如下所示,我查询了contno='GESU5697150'的节点,但它也返回了一些其他节点

neo4j-sh (0)$ start n=node:node_auto_index(contno='GESU5697150')  return n;
==> +----------------------------------------------------+
==> | n                                                  |
==> +----------------------------------------------------+
==> | Node[546290]{contno:"UACU5047693",sizetype:"40HC"} |
==> | Node[700914]{contno:"GESU5697150",sizetype:"40HC"} |
==> +----------------------------------------------------+
==> 2 rows 
这是cypher/Neo4j问题吗?!。因此,我在java代码中获取记录时遇到了问题

Ncontno = autoNodeIndex.get("contno", contno).getSingle();
它抛出下面的错误

Exception in thread "main" java.util.NoSuchElementException: More than one eleme
nt in org.neo4j.index.impl.lucene.LuceneIndex$1@211b3c6a. First element is 'Node
[546290]' and the second element is 'Node[700914]'

Neo4j中的自动索引不关心在自动索引配置更改时对现有内容重新编制索引。如果在更改contno属性时关闭了自动索引,您将看到所描述的行为

若要解决此问题,可以使用其预先存在的值设置属性,从而触发自动索引的隐式更新:

start n=node:node_auto_index(contno='GESU5697150') set n.contno = n.contno
重新运行原始查询应该只返回一个元素


Neo4j 2.0中的模式索引解决了这种不方便的行为,请参阅Neo4j中的my。

通过验证resultset集合中的contno,我获得了上述问题的临时解决方案

hits = container.get("contno", contno);
  for (Node n : hits) {
    if (n.getProperty("contno").toString().equalsIgnoreCase(contno)) {
           Ncontno = n;
    } 
  }

因此,Ncontno将保留预期的contno。但仍在寻找更好的/永久的解决方案

1。
如果在更改contno属性时关闭了自动索引,您将看到所描述的行为
——自动索引在整个创建过程中处于启用状态。2) 我这样做了
start n=node:node_auto_index(contno='GESU5697150')set n.contno=n.contno
,但结果仍然相同。!!请参考以上评论!!您确定已启用自动索引吗?使用从messages.log中获取最新的启动序列并将其上载到pastebinHi,甚至在启用自动索引的情况下再次尝试整个练习,但仍然出现相同的问题,然后尝试使用相同的方法,但问题仍然存在。请参考上述注释并登录到。您是否可以共享导入数据时所做的操作?@Michael Hunger,用于下面的代码
firstNode=null;firstNode=graphDb.createNode();setProperty(“contno”,contno);setProperty(“sizetype”,sizetype);container.add(firstNode,“contno”,contno);add(firstNode,“sizetype”,sizetype)