2014-11-05 4 views
3

После asking about Neo4j caches, не имея окончательного решения, я продолжал тестировать Neo4j как базу данных, которую, вероятно, мы используем в производстве. Однако перед нами стоит новая проблема с атрибутами индексирования с определенными метками.Ошибка индексации Neo4j?

Дело в том, что каким-то образом Neo4j не получает правильные данные, если я запрашиваю узел по метке и атрибуту (который случайно имеет одно и то же имя). Я сделал несколько скриншотов о том, что происходит, надеясь, что это поможет понять, как я понял, что может быть ошибкой. Эти два примера того, что происходит с двумя различными этикетками .:

enter image description here

У меня есть ярлык и этикетки B и атрибуты в и б. Если вы читаете снизу вверх, вы можете увидеть, что я следующие шаги:

  1. Я запрашивающие узлы с атрибутом (без этикетки) < - работает
  2. Я прошу узлы с меткой и атрибуты < - не работает (используя индекс)
  3. я запросить узлы с меткой и атрибутами б < - работает
  4. я запросить узлы с меткой B и атрибутов < - работает
  5. я запросить узлы с меткой B и атрибутов б < - работы (с использованием индекса)

Я также добавил дополнительные столбцы к моему запросу (они не имеют никакого влияния), чтобы проверить, что оба столбца имеют одинаковое значение, а также проверку ярлыков.

У меня возникает эта проблема, только если атрибут индексируется с использованием ярлыка с тем же именем. Это означает, что метка A и атрибут a. Однако этого не происходит с меткой B и атрибутом b. По крайней мере, не в этот раз, потому что воспроизведение той же самой сценарии с другой меткой имя атрибута (по правилу A ... a) вызывает ту же проблему.

Мне не нужно говорить, что извне нет никакого влияния, поэтому я полностью контролирую, что происходит в моей базе данных.

EDIT:

enter image description here

+0

В какой версии вы работаете? Можете ли вы запустить проверку целостности ваших данных: http://www.markhneedham.com/blog/2014/01/22/neo4j-backup-store-copy-and-consistency-check/ –

ответ

1

Ваш # 1 на самом деле не "работа", так как вы должны были получить (по крайней мере) 2 ряда (по одному на каждой этикетке).

В ваших операторах RETURN вы должны включить id(n), чтобы вы могли видеть, какие узлы возвращаются. Прямо сейчас, это не ясно.

EDITED

ОК, с идентификаторами в списке, то теперь ясно, что речь идет об одном узле с несколькими метками. Таким образом, это, безусловно, выглядит странной ошибкой. Если вы видите это в последней версии, вы должны подумать о создании проблемы для этого в github.com/neo4j/neo4j/issues.

+0

Если вы проверите документацию, Функция 'labels()' возвращает коллекцию в виде столбца http://neo4j.com/docs/stable/query-functions-collection.html#functions-labels. Об идентификаторе узла, я редактирую вопрос, добавляя новый скриншот. Другие вещи, которые вы предложили в последних двух параграфах, также были моими первыми трудностями, и по этой причине я добавил два дополнительных столбца, проверяющих равенство столбцов, а также имя ярлыков –

+2

OK, с указанными идентификаторами, теперь ясно, что речь идет об одном узле с несколькими метками. Таким образом, это, безусловно, выглядит странной ошибкой. Если вы видите это в последней версии, вы должны подумать о создании проблемы для этого на https://github.com/neo4j/neo4j/issues. (Я отредактировал свой ответ, чтобы включить этот текст) – cybersam

Смежные вопросы