For the issue you ran into, if you leave off the DISTINCT it should work

and this as well

cypher 2.1.experimental
MATCH (assy:Assy { k_ebene: 'MODEL' })-[:HAS*..]->(mat:Mat { m_matnr:
"A4420380071" })
WITH DISTINCT assy.k_vari AS k_vari
RETURN k_vari
ORDER BY k_vari
LIMIT 1000


On Mon, Nov 24, 2014 at 9:59 AM, Michael Hunger <
michael.hun...@neotechnology.com> wrote:

> I looked at your messages.log
>
> You should probably configure the memory mapping to use:
> (conf/neo4j.properties)
>
> neostore.nodestore.db.mapped_memory=100M
> neostore.relationshipstore.db.mapped_memory=1G
> neostore.propertystore.db.mapped_memory=1G
> neostore.propertystore.db.strings.mapped_memory=200M
> neostore.propertystore.db.arrays.mapped_memory=0M
> neostore.relationshipgroupstore.db.mapped_memory=10M
>
> On Mon, Nov 24, 2014 at 9:34 AM, Michael Hunger <
> michael.hun...@neotechnology.com> wrote:
>
>> :schema is for the neo4j browser
>> for the shell and the /webadmin console it is "schema"
>>
>> How many of both of the nodes are there?
>>
>> MATCH (assy:Assy {k_ebene: 'MODEL'}) return count(*);
>> MATCH (mat:Mat {m_matnr: "A4420380071"}) return count(*) ;
>>
>> I'll ask the Cypher team about the bug.
>>
>>
>> Yes, the Java traversal would be many times faster,
>>
>> Either just going backwards from :Mat via
>> node.getRelationships(Direction.INCOMING,
>> DynamicRelationshipType.withName("HAS")) and then using rel.getStartNode()
>> for the next level.
>> Or using ShortestPath between the two
>> Or using the TraversalDescription with the limit on relationship-type and
>> direction
>>
>>
>> On Mon, Nov 24, 2014 at 8:53 AM, <m...@docware.de> wrote:
>>
>>> Hello Michael,
>>>
>>> thanks already for your support:
>>>
>>> Am Sonntag, 23. November 2014 12:04:33 UTC+1 schrieb Michael Hunger:
>>>>
>>>> Just a few questions:
>>>>
>>>> * can you share your graph.db/messages.log for diagnostics on config.
>>>>
>>>>
>>> it's attached
>>>>
>>>
>>>
>>>> * do you run your queries in the browser? or via the neo4j-shell? or
>>>> from a program?
>>>> in Browser at adress http://localhost:7474/webadmin/ (Data Browser)
>>>>
>>>
>>>
>>>> * what does the output of :schema look like?
>>>>
>>> Sorry, I don't know what you mean. Entering ":schema" gives an error.
>>>
>> "schema" in the shell
>>
>>>
>>>> * what is the maximum depth in your tree?
>>>> 5 in the actual case; for other DBs it could be deeper but deeper than
>>>> 10 would be unlikely
>>>>
>>>
>>>
>>>> * can you try to prefix your query with cypher 2.1.experimental (which
>>>> is the new query planner)
>>>>
>>> Yeah, 1,8s compared to 11s :-)
>>>
>>>>
>>>> * as you bound both nodes and you have a tree, what you're interested
>>>> in is the shortest path between those (I think)
>>>>
>>>> MATCH (assy:Assy {k_ebene: 'MODEL'}), (mat:Mat {m_matnr:
>>>> "A4420380071"})
>>>> MATCH shortestPath((assy)-[:HAS*..]->(mat))
>>>> RETURN distinct assy.k_vari order by assy.k_vari limit 1000
>>>>
>>>> This is slower, took 72s
>>>
>> hmm interesting, perhaps the two node-counts form a cross-product
>>
>>
>>> Our graphs are always shortest paths without need to specifying this.
>>> Once a "MODEL" node have been reached, there are no more "MODEL" nodes
>>> deeper.
>>>
>>>
>>>> * how many paths does this return?
>>>>
>>>> MATCH (assy:Assy {k_ebene: 'MODEL'})-[:HAS*..]->(mat:Mat {m_matnr:
>>>> "A4420380071"})
>>>> RETURN count(*)
>>>>
>>>> ca. 28000
>>>
>>>
>>>> I asusme that :Mat is more selective, so can you try using:
>>>>
>>>> MATCH (assy:Assy {k_ebene: 'MODEL'})-[:HAS*..]->(mat:Mat {m_matnr:
>>>> "A4420380071"})
>>>> USING INDEX mat:Mat(m_matnr)
>>>> RETURN count(*)
>>>>
>>>> no difference
>>>
>> -> I meant in timing not in count :)
>>
>>>
>>>
>>>> Depending the # of returned paths, sorting all of them by assy.k_vari
>>>> can take time too, same for creating the distin
>>>>
>>>> can you try how much time this takes?
>>>>
>>>> MATCH (assy:Assy {k_ebene: 'MODEL'})-[:HAS*..]->(mat:Mat {m_matnr:
>>>> "A4420380071"})
>>>> RETURN distinct assy.k_vari
>>>>
>>>> no difference. I tested already with/without distince and/or order by
>>>
>>
>> yes path matching still has an issue in the current rule based cypher
>> impl, while it should actually be instant
>>
>>>
>>>
>>
>>> So thank you already for telling me how to use the new query planner. Do
>>> you think writing a Java custom transversal would further help us? I think
>>> of implementing a whitelist/blacklist mechanism as you do for our SQL
>>> Server client transversal. There are other situations where the traversal
>>> must stop at nodes meeting certain properties. I think this would a reason
>>> for a custom transversal tool.
>>>
>>> Thanks a lot so far
>>>
>>> Michael S.
>>>
>>>  --
>>> You received this message because you are subscribed to the Google
>>> Groups "Neo4j" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to neo4j+unsubscr...@googlegroups.com.
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Neo4j" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to neo4j+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to