J’utilise Neo4J pour représenter des textes; dans le cas le plus simple, un texte est une suite de mots jointe par la relation LEMMA_TEXT.
J’essaie de trouver le Nième mot après un mot connu, avec une requête qui ressemble à ceci.
MATCH (anchor)-[:LEMMA_TEXT*32]->(word) WHERE id(anchor) = 3275 RETURN word
Dans un cas particulier, si j’augmente la longueur du chemin à 33, j’obtiens cette erreur:
Neo.DatabaseError.Statement.ExecutionFailure: There is no spoon.
Et pourtant, la requête suivante renvoie le résultat correct.
MATCH (anchor)-[:LEMMA_TEXT*32]->(word)-[:LEMMA_TEXT]->(next) WHERE id(anchor) = 3275 RETURN next
ce qui démontre que le noeud que je veux existe et est accessible.
Où est la section du manuel qui me dit comment plier la cuillère avec mon esprit? Plus important encore, qu’est-ce que cela signifie réellement?!
Si quelque chose se casse à un nombre comme 33, cela signifie qu’il y avait une ressortingction jusqu’à 32, pourquoi 32? 2 ^ 5.
Il n’est pas anodin que la plupart des ressortingctions soient d’un facteur 2, la taille du document MongoDB ne pouvant pas dépasser 16 Mo, sur une collection il pourrait y avoir un index maximum, pas plus de 64. etc.
pourquoi cela fonctionne comme 32 et ensuite, parce que jusqu’à 32, il peut réaliser en une seule opération et pour le dernier, il peut voir le prochain comme une autre opération. Mais il ne peut pas y avoir 33 en une seule opération.
La plupart de ces ressortingctions sont essentiellement des contrôles de santé mentale, mais pas vraiment des limites techniques.
Pour ce qui est de savoir pourquoi c’est presque toujours un facteur 2, je veux que quelqu’un d’autre réponde ou, en d’autres termes, je ne sais pas.
Avez-vous essayé de diviser les instructions d’atterrissage et de recherche en 2?
De plus, vous devez append l’étiquette pour le mot texte (forormance)
Exemple:
MATCH (ancre) WHERE id (ancre) = 3275 AVEC ancre MATCH (ancre) - [: LEMMA_TEXT * 32] -> (mot) Mot de retour
Vous obtenez la même erreur?