Я хочу знать, как запрос пути был выполнен в neo4j. Например, у меня есть запрос путь, показанный ниже:Профилирование запроса пути Neo4j
match p=(n)-[r*1..10]->(m)
where
(
n.URI='http://yago-knowledge.org/resource/Jacob_T._Schwartz' OR
n.URI='http://yago-knowledge.org/resource/Anna_Karina'
) AND
filter(x IN r where type(x)=~'.*hasAcademicAdvisor.*') AND
filter(y IN r where type(y)=~'.*isCitizenOf.*') AND
filter(z IN r where type(z)=~'.*participatedIn.*') AND
filter(u IN r where type(u)=~'.*happendedIn.*') AND
filter(v IN r where type(v)=~'.*dealsWith.*')
return p, length(p) order by length(p) desc;
Этот запрос, чтобы найти пути в базе данных графа с исходным узлом «http://yago-knowledge.org/resource/Jacob_T._Schwartz» или «http://yago-knowledge.org/resource/Anna_Karina», которые имеют определенные отношения.
Я использовал команду PROFILE с этим запросом, а ниже - план выполнения, который я получил.
Обратите внимание, что содержание в строке 5 цв 5 слишком долго, поэтому я ставлю *** вместо того, чтобы фактическое содержание.
На самом деле, *** обозначает ((((((Property(n,URI(0)) == { AUTOSTRING0} OR Property(n,URI(0)) == { AUTOSTRING1}) AND nonEmpty(FilterFunction(r,x,RelationshipTypeFunction(x) ~= /{ AUTOSTRING2}/))) AND nonEmpty(FilterFunction(r,y,RelationshipTypeFunction(y) ~= /{ AUTOSTRING3}/))) AND nonEmpty(FilterFunction(r,z,RelationshipTypeFunction(z) ~= /{ AUTOSTRING4}/))) AND nonEmpty(FilterFunction(r,u,RelationshipTypeFunction(u) ~= /{ AUTOSTRING5}/))) AND nonEmpty(FilterFunction(r,v,RelationshipTypeFunction(v) ~= /{ AUTOSTRING6}/)))
Извините за плохой формат.
Может кто-нибудь помочь мне объяснить план? Заранее спасибо!!!
Спасибо так много, Брайан. Да, у меня есть свои причины, использующие регулярное выражение для соответствия типам отношений. Фактически, в моем сценарии приложения я хочу найти пути между набором узлов, чтобы эти пути содержали все указанные отношения. Однако меня не волнует порядок отношений. Это единственный способ, которым я решил достичь своей цели. Кроме того, я согласился с вами о добавлении метки и использовании индекса для производительности. Я попробую! – sgao
FWIW, синтаксис, который я дал, не указывает конкретный порядок, только то, что все отношения по пути должны быть одним из указанных типов. –
Однако мне нужно, чтобы все они отображались в конечных путях. – sgao