2015-05-27 13 views
45

Używam Neo4J do reprezentowania tekstów; w najprostszym przypadku tekst to ciąg słów połączonych relacją LEMMA_TEXT.Dlaczego Neo4J mówi mi, że nie ma łyżki?

Próbuję znaleźć n-tą słowo po znanym słowie, z zapytaniem, które wygląda mniej więcej tak.

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

W jednym szczególnym przypadku, jeśli mogę zwiększyć długość drogi do 33, otrzymuję ten błąd:

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

I jeszcze Następująca kwerenda zwraca poprawny wynik.

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

który pokazuje, że węzeł, który chcę, istnieje i jest osiągalny.

Gdzie znajduje się sekcja instrukcji, która mówi mi, jak zgiąć łyżkę za pomocą mojego umysłu? Co ważniejsze, co to właściwie oznacza ?!

+0

Czy mógłbyś udostępnić swoją bazę danych do testów z nami? –

+0

jakiej wersji Neo4j używasz, czy możesz wypróbować najnowszą wersję 2.2.2? –

+0

Dzięki za odpowiedź! Nadal dostaję błąd pod 2.2.2: 'Neo.DatabaseError.Statement.ExecutionFailure: Nieoczekiwanie próbował obliczyć liczność relacji [* 0..0]" Mogę dostarczyć kopię DB, jeśli potrzebujesz to - po prostu daj mi znać, gdzie wysłać link. – tla

Odpowiedz

0

Czy próbowałeś podzielić wyładowanie i wyciągi w 2?

Plus należy dodać etykietę dla słowa tekstu (forormance)

Przykład:

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

uzyskać ten sam błąd?

2

Jeśli coś pęknie pod numerem 33, oznacza to, że istnieje ograniczenie do 32, dlaczego 32? 2^5.

To nie jest trywialne, że większość z tych ograniczeń są o współczynnik 2, MongoDB format dokumentu nie może zawierać więcej niż 16 MB, w kolekcji nie może być maksymalny wskaźnik, nie więcej niż 64. itd

dlaczego działa jako 32, a następnie następny, ponieważ do 32 może osiągnąć w jednej operacji, a na końcu może zobaczyć kolejną operację. Ale nie może przejść do 33 w jednej operacji.

Większość z tych ograniczeń to w zasadzie kontrola poprawności, a nie tak naprawdę granica techniczna.

Co do tego, dlaczego prawie zawsze jest to czynnik 2, chcę, aby ktoś inny odpowiedział lub, innymi słowy, nie wiem.

Powiązane problemy