Запрос Neo4j ложно возвращает ноль - PullRequest
0 голосов
/ 11 сентября 2018

Я использую Neo4j v 3.4.1 с Docker.

Я запускаю следующий запрос через оболочку шифра:

MATCH (blogA:content {entitySubType:"blog"})-[]->(t:term)<-[]-(blogB:content {entitySubType:"blog"})
WHERE blogA <> blogB 
RETURN ID(blogA), ID(blogB), count(t);

Запрос возвращает ноль через несколько часов.Я не могу понять или найти что-то, что указывает мне на решение.При проверке журнала отладки я получаю следующее:

2018-09-08 09:53:54.675+0000 ERROR [o.n.b.v.r.ErrorReporter] Client triggered an unexpected error [Neo.DatabaseError.General.UnknownError]: null, reference 549a05ea-3bee-442b-baf5-fd741d37e2db.
2018-09-08 09:53:54.675+0000 ERROR [o.n.b.v.r.ErrorReporter] Client triggered an unexpected error [Neo.DatabaseError.General.UnknownError]: null, reference 549a05ea-3bee-442b-baf5-fd741d37e2db.
java.lang.NegativeArraySizeException
        at scala.collection.mutable.HashTable$class.resize(HashTable.scala:257)
        at scala.collection.mutable.HashTable$class.scala$collection$mutable$HashTable$$addEntry0(HashTable.scala:157)
        at scala.collection.mutable.HashTable$class.addEntry(HashTable.scala:148)
        at scala.collection.mutable.HashMap.addEntry(HashMap.scala:40)
        at scala.collection.mutable.HashMap.addEntry(HashMap.scala:93)
        at scala.collection.mutable.HashMap.getOrElseUpdate(HashMap.scala:79)
        at org.neo4j.cypher.internal.runtime.interpreted.pipes.EagerAggregationPipe$$anonfun$internalCreateResults$1.apply(EagerAggregationPipe.scala:120)
        at org.neo4j.cypher.internal.runtime.interpreted.pipes.EagerAggregationPipe$$anonfun$internalCreateResults$1.apply(EagerAggregationPipe.scala:118)
        at scala.collection.Iterator$class.foreach(Iterator.scala:891)
        at scala.collection.AbstractIterator.foreach(Iterator.scala:1334)
        at org.neo4j.cypher.internal.runtime.interpreted.pipes.EagerAggregationPipe.internalCreateResults(EagerAggregationPipe.scala:118)
        at org.neo4j.cypher.internal.runtime.interpreted.pipes.PipeWithSource.createResults(Pipe.scala:76)
        at org.neo4j.cypher.internal.runtime.interpreted.pipes.PipeWithSource.createResults(Pipe.scala:72)
        at org.neo4j.cypher.internal.compatibility.v3_4.runtime.executionplan.BaseExecutionResultBuilderFactory$BaseExecutionWorkflowBuilder.createResults(DefaultExecutionResultBuilderFactory.scala:105)
        at org.neo4j.cypher.internal.compatibility.v3_4.runtime.executionplan.BaseExecutionResultBuilderFactory$BaseExecutionWorkflowBuilder.build(DefaultExecutionResultBuilderFactory.scala:77)
        at org.neo4j.cypher.internal.compatibility.v3_4.runtime.BuildInterpretedExecutionPlan$$anonfun$getExecutionPlanFunction$1.apply(BuildInterpretedExecutionPlan.scala:97)
        at org.neo4j.cypher.internal.compatibility.v3_4.runtime.BuildInterpretedExecutionPlan$$anonfun$getExecutionPlanFunction$1.apply(BuildInterpretedExecutionPlan.scala:80)
        at org.neo4j.cypher.internal.compatibility.v3_4.runtime.BuildInterpretedExecutionPlan$InterpretedExecutionPlan.run(BuildInterpretedExecutionPlan.scala:111)
        at org.neo4j.cypher.internal.compatibility.LatestRuntimeVariablePlannerCompatibility$ExecutionPlanWrapper$$anonfun$run$1.apply(LatestRuntimeVariablePlannerCompatibility.scala:128)
        at org.neo4j.cypher.internal.compatibility.LatestRuntimeVariablePlannerCompatibility$ExecutionPlanWrapper$$anonfun$run$1.apply(LatestRuntimeVariablePlannerCompatibility.scala:124)
        at org.neo4j.cypher.exceptionHandler$runSafely$.apply(exceptionHandler.scala:89)
        at org.neo4j.cypher.internal.compatibility.LatestRuntimeVariablePlannerCompatibility$ExecutionPlanWrapper.run(LatestRuntimeVariablePlannerCompatibility.scala:124)
        at org.neo4j.cypher.internal.PreparedPlanExecution.execute(PreparedPlanExecution.scala:29)
        at org.neo4j.cypher.internal.ExecutionEngine.execute(ExecutionEngine.scala:119)
        at org.neo4j.cypher.internal.javacompat.ExecutionEngine.executeQuery(ExecutionEngine.java:61)
        at org.neo4j.bolt.v1.runtime.TransactionStateMachineSPI$1.start(TransactionStateMachineSPI.java:144)
        at org.neo4j.bolt.v1.runtime.TransactionStateMachine$State.startExecution(TransactionStateMachine.java:444)
        at org.neo4j.bolt.v1.runtime.TransactionStateMachine$State$1.execute(TransactionStateMachine.java:259)
        at org.neo4j.bolt.v1.runtime.TransactionStateMachine$State$1.run(TransactionStateMachine.java:240)
        at org.neo4j.bolt.v1.runtime.TransactionStateMachine.run(TransactionStateMachine.java:81)
        at org.neo4j.bolt.v1.runtime.BoltStateMachine$State$2.run(BoltStateMachine.java:457)
        at org.neo4j.bolt.v1.runtime.BoltStateMachine.run(BoltStateMachine.java:225)
        at org.neo4j.bolt.v1.messaging.BoltMessageRouter.lambda$onRun$3(BoltMessageRouter.java:93)
        at org.neo4j.bolt.runtime.DefaultBoltConnection.processNextBatch(DefaultBoltConnection.java:195)
        at org.neo4j.bolt.runtime.DefaultBoltConnection.processNextBatch(DefaultBoltConnection.java:143)
        at org.neo4j.bolt.runtime.ExecutorBoltScheduler.executeBatch(ExecutorBoltScheduler.java:170)
        at org.neo4j.bolt.runtime.ExecutorBoltScheduler.lambda$scheduleBatchOrHandleError$2(ExecutorBoltScheduler.java:153)
        at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1590)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)

Мы все вместе предполагали, что entitySubType не установлен для всех узлов содержимого.Я подтверждаю это предположение, которое верно.Исходя из этого, я переформулировал свой запрос, используя предикатную функцию exist (), например:

MATCH (blogA:content)-[:TaggedWith]->(t:term)<-[:TaggedWith]-(blogB:content) 
WHERE ID(blogA) <> ID(blogB) AND exists(blogA.entitySubType) AND 
exists(blogB.entitySubType) AND "blog" = blogA.entitySubType AND "blog" = 
blogB.entitySubType RETURN ID(blogA), ID(blogB), count(t);

Запрос возвратил значение NULL и снова завершился исключением tex через ~ 19,1 ч (на 3 минуты раньше, чем в прошлый раз)

Следующий план запроса задается командой EXPLAIN: Query PLan

Я не вижу, где происходит (blogA.entitySubType).Кроме того, я не могу найти фильтр "blog" = blogA.entitySubType AND "blog" = blogB.entitySubType.

Мой запрос неверный или визуализация плана запроса не завершена?

Ответы [ 2 ]

0 голосов
/ 11 сентября 2018

Свойство «entitySubType» может не быть установлено в некоторых узлах, поэтому по причине выполнения запроса узлы, для которых «entitySubType» отсутствует, возвращаться не будут. Убедитесь, что все узлы содержат свойство entitySubType.

0 голосов
/ 11 сентября 2018

Похоже, это может быть свойство, которое имеет значение null, возможно, "entitySubType" не установлен для всех сообщений?

Является ли ошибка последовательной или периодической? База данных постоянно обновляется, если да, то как?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...