2016-04-08 78 views
0

bağlantılı?Neo4j/Cypher bu bağlantılı liste Sayfalara ayırma etkili yolu ne olmalıdır <pre><code>(:Post)-[:PREVIOUS]->(:Comment)-[:PREVIOUS]->(:Comment)-...->(:Comment) </code></pre> <p>yapısı</p> aşağıdakilere sahip liste geçişi ve sayfa numarasının

Var uzunluk genişletilirken, tarihin derinliklerine inerken degrade olacak.

MATCH (p:POST) WHERE p.Id = {id} 
MATCH (p)-[:PREVIOUS*100..200]->(c) 
RETURN c 

Yeni yorumlar eklenebilir ve silinebilir. Yani, CommentId ile başlangıç ​​noktası bulmak bir seçenek değildir.

GÜNCELLEME

de Önerilen atlama sınırı yaklaşım değişken uzunluk yolu genişletmek daha kötü bir performans sergiliyor. Bu yüzden burada dikkate alınmadı.

MATCH (p:Post)-[:PREVIOUS*]->(c) 
WHERE p.Id = {id} 
RETURN c SKIP 0 LIMIT 500 

cevap

0

, geri sonuçların toplu almak için SKIP ve LIMIT kullanmayı tercih ediyorum en yakın tarihli sözlerine db motoru ve {id} noktalarından dışından Neo4j çağrı yapıyoruz varsayarsak:

MATCH (p:Post)-[:PREVIOUS*]->(c) 
WHERE p.Id = {id} 
RETURN c SKIP 0 LIMIT 500 

Her aramanın "atlama" değerlerini değiştirin ve sayfa numaranızı alırsınız. Örneğin, ikinci arama SKIP 500 olacaktır, üçüncüsü SKIP 1000, vs. olacaktır.

REST API'sı ayrıca, ardışık çağrılar arasında toplu sorgu sonuçlarını toplu olarak sunmanın bir yolunu sunar - daha fazla ayrıntı için REST belgelerini kontrol edin.

Disk belleği katedicileri bir düğüm temsilinde paged_traverser anahtar bilgisini bağlamak üzere geçişi açıklama SONRASI ing tarafından oluşturulur sayfalamalı şaryo oluşturma:

İşte belleğine geçişleri üzerinde REST API metin var. Disk belleği olan bir traverser oluştururken, aynı seçenekler, normal bir traverser için geçerlidir; bu, düğümün, yolunun veya tam yolun hedeflenebileceği anlamına gelir.

 
Example request 
• POST http://localhost:7474/db/data/node/297/paged/traverse/node 
• Accept: application/json; charset=UTF-8 
• Content-Type: application/json 
+0

'ATLAMA LIMIT' Başlangıçta belirtilen bu genişletme var uzunluğundan daha kötü bir performans (- [: ÖNCEKİ * 100..200] -> (c)' '' MATCH (p)) yer alır. sorgu planlayıcısında kontrol edebilirsiniz. Bu yüzden ilk etapta bahsetmedim. – drgraduss

+0

Eğer denemekten bahsetmiş olsaydınız ve yeterince verimli olmadıysa, ikimiz de bir süre kurtulduk. –

+0

"Atla sınırı" ifadesinden bahsetmediğim için ping paging traversals –