Получение разных (и неправильных) результатов при выполнении одного и того же шифровального запроса на идентичных схемах БД

Я запускаю следующий шифрованный запрос на двух идентичных схемах БД neo4j:

START dave = node(7)
// dave's friend who lives and attends an event in the same city
MATCH dave-[:FRIEND]-friend-[:LIVES]->city-[:HOSTS]->event<-[:ATTENDS]-friend
RETURN dave.name, friend.name, city.name, event.name;

Когда я запускаю приведенный выше запрос к схеме БД на своем локальном сервере, я получаю правильные результаты — единственный путь:

+----------------------------------------------------+ 
| dave.name | friend.name | city.name | event.name   |  
+----------------------------------------------------+ 
| "dave"    | "adam"      | "london"  | "exhibition" | 
+----------------------------------------------------+

На самом деле для каждого из 4 человек node(4, 5, 6, 7), adam=node(4) является единственным человеком, который живет и посещает мероприятие в том же городе.

Однако, когда я запускаю тот же запрос здесь (в той же самой схеме БД, что и на моей локальной сервер) я получаю следующий неверный результат:

+----------------------------------------------------+ 
| dave.name | friend.name | city.name | event.name   |  
+----------------------------------------------------+ 
| "dave"    | "adam"      | "london"  | "exhibition" | 
| "dave"    | "adam"      | "london"  | "exhibition" | 
| "dave"    | "bill"      | "paris"   | "seminar"    | // bill doesn't attend seminar
+----------------------------------------------------+

Для других лиц вместо dave=node(7) результаты здесь также неверны (доп. несуществующие пути).


person user1030497    schedule 28.11.2012    source источник
comment
Они оба используют одну и ту же версию neo4j? Также вы говорите, что у них одинаковая информация, это загрузка на обоих, или это была загрузка на одном и копия на другом?   -  person Nicholas    schedule 28.11.2012
comment
На моем компьютере я использую v1.8 neo4j, а в веб-консоли я выбираю ту же версию перед выполнением запроса. Так что да, в обоих случаях у меня одинаковая версия. Более того, запрос в веб-консоли дает тот же результат (неверный, как я объяснил ранее) для всех других версий (тех, которые старше или новее, чем v1.8). Извините, @Nicholas, второй вопрос в вашем комментарии не ясен. Пожалуйста, объясните.   -  person user1030497    schedule 29.11.2012
comment
Как вы загружаете данные в свои системы? Вы говорите, что это одни и те же данные, но как вы это гарантируете?   -  person Nicholas    schedule 29.11.2012
comment
@Nicholas - Чтобы настроить базу данных графа, я запускаю этот шифр CREATE запрос. Как вы можете видеть в веб-консоли, это единственные данные; и на моем компьютере я запускаю запрос CREATE для пустой БД. Итак, в обоих случаях для следующего запроса есть одни и те же данные, которые я разместил в своем вопросе.   -  person user1030497    schedule 29.11.2012
comment
Не могли бы вы поднять это как проблему на github.com/neo4j/neo4j/issues? Большое спасибо.   -  person Michael Hunger    schedule 30.11.2012


Ответы (1)


попробуйте разделить фазу сопоставления на 2, я никогда не использовал одно имя параметра 2 раза в одном шаблоне сопоставления:

кроме

MATCH dave-[:FRIEND]-friend-[:LIVES]->city-[:HOSTS]->event<-[:ATTENDS]-friend

использовать

MATCH dave-[:FRIEND]-friend-[:LIVES]->city-[:HOSTS]->event, event<-[:ATTENDS]-friend
person ulkas    schedule 29.11.2012
comment
В первом запросе нет ничего плохого — он совершенно законен и возвращает правильный (ожидаемый) результат при запуске на моем локальном сервере БД. Мой вопрос заключался в том, почему тот же запрос дает неверные результаты при запуске на другой идентичной схеме БД в веб-консоли здесь (возвращает несколько несуществующих путей, где существует только один путь). Более того, в обоих случаях я использую/устанавливаю одну и ту же версию (v1.8) и гарантирую, что данные в двух БД идентичны. - person user1030497; 30.11.2012