2015-05-27 3 views
45

Я использую Neo4J для представления текстов; в простейшем случае текст представляет собой последовательность слов, соединенных отношением LEMMA_TEXT.Почему Neo4J говорит мне, что нет ложки?

Я пытаюсь найти N-е слово после известного слова, с запросом, который выглядит примерно так.

MATCH (anchor)-[:LEMMA_TEXT*32]->(word) 
WHERE id(anchor) = 3275 
RETURN word 

В одном частном случае, если увеличить длину пути до 33, я получаю эту ошибку:

Neo.DatabaseError.Statement.ExecutionFailure: There is no spoon. 

И все же следующий запрос возвращает правильный результат.

MATCH (anchor)-[:LEMMA_TEXT*32]->(word)-[:LEMMA_TEXT]->(next) 
WHERE id(anchor) = 3275 
RETURN next 

, который демонстрирует, что узел, который я хочу, существует и доступен.

Где раздел руководства, который рассказывает мне, как сгибать ложку с моим разумом? Что еще более важно, что это значит?

+0

Вы могли бы поделиться своей базой данных для тестирования с нами? –

+0

какая версия Neo4j вы используете, можете ли вы попробовать самые последние версии 2.2.2? –

+0

Спасибо за ответ! Я все еще получаю сообщение об ошибке в соответствии с пунктом 2.2.2: 'Neo.DatabaseError.Statement.ExecutionFailure: Неожиданно пытался вычислить мощность отношения [* 0..0 ]' Я могу предоставить копию БД, если вам нужно это - просто дайте мне знать, куда отправить ссылку. – tla

ответ

0

Вы пробовали разбить посадку и поисковые заявления в 2?

Кроме того, вы должны добавить метку для текста слова (forormance)

Пример:

MATCH (anchor) 
WHERE id(anchor) = 3275 
WITH anchor 
MATCH (anchor)-[:LEMMA_TEXT*32]->(word) 
RETURN word 

Вы получаете ту же ошибку?

2

Если что-то ломается под номером 33, это означает, что существует ограничение до 32, почему 32? 2^5.

Это не тривиальна, что большинство ограничений в 2 раза, MongoDB размер документа не может быть более чем 16 МБ, на сборнике может быть максимальный показатель, не более 64. и т.д.

почему он работает как 32, а затем следующий, потому что до 32 он может достигать за одну операцию, а для последнего он может видеть следующий в качестве другой операции. Но он не может пройти 33 за одну операцию.

Большинство из этих ограничений в основном являются проверкой здравомыслия, хотя и не являются технической границей.

Что касается того, почему он почти всегда является фактором 2, я хочу, чтобы кто-то другой ответил или, другими словами, я не знаю.

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