sheet - ¿Por qué Neo4J me dice que no hay una cuchara?
neo4j tutorial (2)
Estoy usando Neo4J para representar textos; en el caso más simple, un texto es una secuencia de palabras unidas por la relación LEMMA_TEXT.
Estoy tratando de encontrar la palabra enésima después de una palabra conocida, con una consulta que se parece a esto.
MATCH (anchor)-[:LEMMA_TEXT*32]->(word)
WHERE id(anchor) = 3275
RETURN word
En un caso particular, si incremento la longitud de la ruta a 33, recibo este error:
Neo.DatabaseError.Statement.ExecutionFailure: There is no spoon.
Y sin embargo, la siguiente consulta devuelve el resultado correcto.
MATCH (anchor)-[:LEMMA_TEXT*32]->(word)-[:LEMMA_TEXT]->(next)
WHERE id(anchor) = 3275
RETURN next
lo que demuestra que el nodo que quiero existe y es accesible.
¿Dónde está la sección del manual que me dice cómo doblar la cuchara con mi mente? Más importante aún, ¿qué significa esto realmente?
¿Has intentado dividir el aterrizaje y las declaraciones de búsqueda en 2?
Además, debe agregar la etiqueta para la palabra de texto (por ejemplo)
Ejemplo:
MATCH (anchor) WHERE id(anchor) = 3275 WITH anchor MATCH (anchor)-[:LEMMA_TEXT*32]->(word) RETURN word
¿Tienes el mismo error?
Si algo se rompe en el número 33, significa que hubo una restricción de hasta 32, ¿por qué 32? 2 ^ 5.
No es trivial que la mayoría de las restricciones estén en un factor de 2, el tamaño del documento MongoDB no puede ser más de 16 MB, en una colección puede haber un índice máximo, no más de 64. etc.
por qué funciona como 32 y luego a continuación, porque hasta 32 se puede lograr en una operación y para la última puede ver la siguiente como otra operación Pero no puede ir por 33 en una sola operación.
Sin embargo, la mayoría de estas restricciones son básicamente un control de cordura y no un límite realmente técnico.
En cuanto a por qué casi siempre es un factor de 2, quiero que alguien más responda o, en otras palabras, no lo sé.