Я хочу рассчитать между собой на очень большом графике в neo4j, используя py2neo.py2neo запрос для вычисления ошибки между значениями
Я использую Cypher запрос, как это:
MATCH p=allShortestPaths((source:DOLPHIN)-[*]-(target:DOLPHIN))
WHERE id(source) < id(target)
AND length(p) > 1
UNWIND nodes(p)[1..-1] as n
RETURN n.name, count(*) as betweenness
ORDER BY betweenness DESC
Это работает для малого графа, но не работает для большого графа с 1 миллиона узлов. Я передал этот запрос с помощью py2neo.
Раньше у меня возникал тайм-аут ошибки, который был разрешен, но теперь, после запуска в какой-то момент, он говорит, что запрос не может быть обработан. Я получаю следующее сообщение об ошибке: -
File "/usr/local/lib/python2.7/dist-packages/py2neo/cypher/core.py", line 111, in execute
results = tx.commit()
File "/usr/local/lib/python2.7/dist-packages/py2neo/cypher/core.py", line 306, in commit
return self.post(self.__commit or self.__begin_commit)
File "/usr/local/lib/python2.7/dist-packages/py2neo/cypher/core.py", line 261, in post
raise self.error_class.hydrate(error)
py2neo.cypher.error.statement.ExecutionFailure: The statement has been closed.
Я искал много о нем. Пожалуйста, помогите мне с этим
Возможно, сервер базы данных перегружен запросом. Попробуйте запустить этот процесс последовательно, ограничивая диапазон узлов, пройденных на каждом шагу. Я не решаюсь предложить решение, потому что я не совсем уверен, что вы агрегируете. Либо ограничивающие узлы, либо пути, вероятно, будут давать разные результаты для каждого вызова. Но я бы посоветовал вам не выполнять полные графические запросы в Neo4j. – Guilherme
Привет, спасибо за ваше предложение. У меня есть данные авторов научных работ, которые имеют одинаковую область. Из этого я сделал график соавторов. Теперь я хочу найти лучших авторов в сети, вычислив междоусобие каждого автора. можете ли вы предложить хороший способ для этого, используя некоторые запросы neo4j, потому что этот запрос не работает? –
Для хорошей рекомендации мне нужно знать вашу схему. Если у вас есть что-то вроде: (автор) - [: НАПИСАЛ] -> (бумага) Если вы определили лучших авторов, как те, которые написаны большинство документов, , то вы можете выполнить запрос так: MATCH (автор: Автор) - [r: WROTE] - (x: Бумага) RETURN author.name AS имя, COUNT (r) AS n ORDER BY n DESC LIMIT 10 – Guilherme