Re: [Neo4j] Cypher Query Optimizing

2011-12-01 Thread Martin Junghanns
Am 01.12.2011 01:48, schrieb Michael Hunger:
 Martin,
Michael, :)

 would you be so kind as to test the current neo4j-1.6 snapshot with your 
 query?
I used neo4j 1.6 M01 community edition for my tests.

 We did some changes in cypher and would like to see how that affects your 
 query.

 Thanks a lot

 Michael
Greetings, Martin

 Am 30.11.2011 um 18:34 schrieb Martin Junghanns:

 @Tero @Krzysztof
 thx for your fast replies.

 @Krzysztof
 for me it was not fairly well known. I will also check out the
 traverser api.

 @Tero
 I tried the same query using the internal id instead of my mapping index
 (lucene)

 orig:
 START n=node:words(w_id = '137') MATCH n-[:CO_S]-m, n-[:CO_S]-  t,
 m-[r:CO_S]-  t return m.w_id, t.w_id, r.sig, r.freq
 took: 662ms (average of 100 runs after 10 warmups)

 new:
 START n=node(119) MATCH n-[:CO_S]-m, n-[:CO_S]-  t, m-[r:CO_S]-  t
 return m.w_id, t.w_id, r.sig, r.freq
 took: 644ms (average of 100 runs after 10 warmups)

 So it doesn't seem to be much more faster not using the index for node
 lookup.

 I will check out your posts concerning Lucene Index.

 Greetings, Martin

 Am 30.11.2011 18:08, schrieb Krzysztof Raczyński:
 It is fairly well known that cypher queries are not (yet) optimised.
 If speed is a concern for you, try using traversal API, i can confirm
 it is much faster than cypher.

 cheers
 ___
 Neo4j mailing list
 User@lists.neo4j.org
 https://lists.neo4j.org/mailman/listinfo/user
 ___
 Neo4j mailing list
 User@lists.neo4j.org
 https://lists.neo4j.org/mailman/listinfo/user
 ___
 Neo4j mailing list
 User@lists.neo4j.org
 https://lists.neo4j.org/mailman/listinfo/user

___
Neo4j mailing list
User@lists.neo4j.org
https://lists.neo4j.org/mailman/listinfo/user


Re: [Neo4j] Cypher Query Optimizing

2011-11-30 Thread Tero Paananen
 Cypher:

 START n=node:words(w_id = 137) MATCH n-[:CO_S]-m, n-[:CO_S]- t,
 m-[r:CO_S]- t return m.w_id, t.w_id, r.sig, r.freq


 The results are the same, but the Cypher Query is about 10 times slower
 than the SQL pendant. I currently do not use any additional indices.
 Just  a map (words) between my word ID and the neo4j node id.

Doing index lookups is much slower than node lookups.

In the application I'm developing, we've removed most index lookups
and replaced them with node lookups. We keep a keyword to nodeId
mapping in a key/value store and lookup the nodeId before running any
Cypher queries.

In your case:

START n=node(1) MATCH n-[:CO_S]-m, n-[:CO_S]- t,
m-[r:CO_S]- t return m.w_id, t.w_id, r.sig, r.freq

(where 1 is the corresponding nodeId to w_id = 137)

If I understood your email correctly, you already have that map available
to you (137 - 1). I'd use that to see if it's any quicker.

Your mileage may vary, of course. In our application the speed improvements
were roughly 10x. See my post on the mailing list with subject:

Comparing Lucene index lookup performance to lookup by node id

-TPP
___
Neo4j mailing list
User@lists.neo4j.org
https://lists.neo4j.org/mailman/listinfo/user


Re: [Neo4j] Cypher Query Optimizing

2011-11-30 Thread Martin Junghanns
@Tero @Krzysztof
thx for your fast replies.

@Krzysztof
for me it was not fairly well known. I will also check out the 
traverser api.

@Tero
I tried the same query using the internal id instead of my mapping index 
(lucene)

orig:
START n=node:words(w_id = '137') MATCH n-[:CO_S]-m, n-[:CO_S]- t, 
m-[r:CO_S]- t return m.w_id, t.w_id, r.sig, r.freq
took: 662ms (average of 100 runs after 10 warmups)

new:
START n=node(119) MATCH n-[:CO_S]-m, n-[:CO_S]- t, m-[r:CO_S]- t 
return m.w_id, t.w_id, r.sig, r.freq
took: 644ms (average of 100 runs after 10 warmups)

So it doesn't seem to be much more faster not using the index for node 
lookup.

I will check out your posts concerning Lucene Index.

Greetings, Martin

Am 30.11.2011 18:08, schrieb Krzysztof Raczyński:
 It is fairly well known that cypher queries are not (yet) optimised.
 If speed is a concern for you, try using traversal API, i can confirm
 it is much faster than cypher.

 cheers
 ___
 Neo4j mailing list
 User@lists.neo4j.org
 https://lists.neo4j.org/mailman/listinfo/user

___
Neo4j mailing list
User@lists.neo4j.org
https://lists.neo4j.org/mailman/listinfo/user


Re: [Neo4j] Cypher Query Optimizing

2011-11-30 Thread Krzysztof Raczyński
 START n=node(119) MATCH n-[:CO_S]-m, n-[:CO_S]- t, m-[r:CO_S]- t
 return m.w_id, t.w_id, r.sig, r.freq
 took: 644ms (average of 100 runs after 10 warmups)

Can you try using shortestPath cypher function for m-t ?
___
Neo4j mailing list
User@lists.neo4j.org
https://lists.neo4j.org/mailman/listinfo/user


Re: [Neo4j] Cypher Query Optimizing

2011-11-30 Thread Michael Hunger
Martin,

would you be so kind as to test the current neo4j-1.6 snapshot with your query?

We did some changes in cypher and would like to see how that affects your query.

Thanks a lot

Michael

Am 30.11.2011 um 18:34 schrieb Martin Junghanns:

 @Tero @Krzysztof
 thx for your fast replies.
 
 @Krzysztof
 for me it was not fairly well known. I will also check out the 
 traverser api.
 
 @Tero
 I tried the same query using the internal id instead of my mapping index 
 (lucene)
 
 orig:
 START n=node:words(w_id = '137') MATCH n-[:CO_S]-m, n-[:CO_S]- t, 
 m-[r:CO_S]- t return m.w_id, t.w_id, r.sig, r.freq
 took: 662ms (average of 100 runs after 10 warmups)
 
 new:
 START n=node(119) MATCH n-[:CO_S]-m, n-[:CO_S]- t, m-[r:CO_S]- t 
 return m.w_id, t.w_id, r.sig, r.freq
 took: 644ms (average of 100 runs after 10 warmups)
 
 So it doesn't seem to be much more faster not using the index for node 
 lookup.
 
 I will check out your posts concerning Lucene Index.
 
 Greetings, Martin
 
 Am 30.11.2011 18:08, schrieb Krzysztof Raczyński:
 It is fairly well known that cypher queries are not (yet) optimised.
 If speed is a concern for you, try using traversal API, i can confirm
 it is much faster than cypher.
 
 cheers
 ___
 Neo4j mailing list
 User@lists.neo4j.org
 https://lists.neo4j.org/mailman/listinfo/user
 
 ___
 Neo4j mailing list
 User@lists.neo4j.org
 https://lists.neo4j.org/mailman/listinfo/user

___
Neo4j mailing list
User@lists.neo4j.org
https://lists.neo4j.org/mailman/listinfo/user