Попробуйте использовать OR
вместо AND
в вашей статье WHERE
.
Edit:
Я думаю, что есть две части два его.
Во-первых, для вашего «пересечения причин» вы должны указать шаблон, который выражает это пересечение. Подумайте об этом, указав точно, какие данные вы хотите вернуть, а затем откройте или обобщите те части шаблона, которые вы хотите заполнить, в зависимости от того, что находится на вашем графике. Если я правильно понимаю вашу модель и ваше намерение это сделало бы картину, как
(fever)-[:CAUSES]->(malaria)<-:[CAUSES]-(flu)
Идентификаторы узлов являются только заполнители, но пусть они представляют, что вы уже знаете, что грипп и лихорадка оба имеют отношение этого типа к малярия. Тогда, если вы хотите спросить: «Что это за отношения, связанные с гриппом и лихорадкой?» вы можете обобщить его как
(fever)-[:CAUSES]->(unknown)<-[:CAUSES]-(flu)
Сами по себе эти модели идентичны для шифром, но так как вы предоставите два известных узлов, узел гриппа и узел лихорадки, и вы знаете, что вы хотите что-то они имеют в общем в соответствии к определенному отношению, то вы можете объявить именно этот шаблон и оставить только неизвестный узел, который является общим.
Во-вторых, вам нужно заполнить этот шаблон узлами, которые вы уже знаете. Если бы вы соответствовали шаблону, так как это были только известные его части, являющиеся типом и направлением отношений, вы могли бы найти все триплеты узлов, связанных таким образом. Поэтому, если вы хотите, чтобы этот шаблон соответствовал только гриппу и лихорадке, вам необходимо предоставить или заполнить эти узлы в шаблоне. Обычно вы будете делать это с помощью индекса просмотров (до 2,0 не Выпущенный в любом случае), как
START flu=node:Symptom(name="Flu"), fever=node:Symptom(name="Fever")
, а затем продолжить шаблон в пункте MATCH
. Таким образом, шаблон заполняется полностью, за исключением одного неизвестного узла, который вы ищете. (Обратите внимание, что вы можете заполнить местозаполнитель в шаблоне мешком узлов, а также отдельными, но эта часть шаблона по-прежнему принадлежит тому, что предусмотрено в шаблоне.) Если у вас нет индексов, вы можете заполнить заполнители для гриппа и лихорадки с «всеми узлами», а затем предоставляют дополнительные критерии фильтрации. Это плохо, но это работает.
START flu=node(*), fever=node(*)
MATCH (flu)-[:CAUSES]->(unknown)<-[:CAUSES]-(fever)
WHERE flu.Name="Flu" AND fever.Name="Fever"
RETURN DISTINCT unknown
нео версия? есть ли у вас какие-либо индексы, которые выглядят? –
Нет, нужны ли индексы, потому что, когда я ищу причины по лихорадке, это дает мне правильные результаты. – pawan9977
У вас должен быть указатель на Name, поэтому вам не нужно сканировать граф, чтобы найти его. Вы используете нео 1.9 или 2.0? Причина, по которой вы не получаете никаких результатов, состоит в том, что у вас никогда не будет двух разных значений для aa.Name в том же промежуточном результате, поэтому вам нужно либо использовать OR, либо считать их, либо если вы хотите только найти эти результаты, их нужно подбирать отдельно. –