I've experimented with this all weekend and haven't made any progress. Due
to deadlines I've just moved forward with having neo4j just use one index,
and taking db_hits for the subsequent lookups.  Is this a neo4j bug?

~A


On Fri, Jun 6, 2014 at 2:36 PM, Aru Sahni <[email protected]> wrote:

> I just upgraded to 2.0.3 and can verify the same behavior.
>
> ~Aru
>
>
> On Fri, Jun 6, 2014 at 2:19 PM, Michael Hunger <
> [email protected]> wrote:
>
>> Can you try to verify the behavior in 2.0.3 or 2.1.1  ?
>>
>>
>> On Fri, Jun 6, 2014 at 8:12 PM, Aru Sahni <[email protected]> wrote:
>>
>>> 2.0.1
>>>
>>> ~Aru
>>>
>>>
>>> On Fri, Jun 6, 2014 at 2:09 PM, Michael Hunger <
>>> [email protected]> wrote:
>>>
>>>> Which version are you using?
>>>>
>>>>
>>>> On Fri, Jun 6, 2014 at 8:00 PM, Aru Sahni <[email protected]> wrote:
>>>>
>>>>> Hi all,
>>>>>
>>>>> My simplified data model is as follows:
>>>>>
>>>>> Entity {
>>>>>    source}
>>>>> Person {
>>>>>    first_name}
>>>>>
>>>>> And I have the following indexes:
>>>>>
>>>>> ON :Entity(source)     ONLINE
>>>>> ON :Person(first_name) ONLINE
>>>>>
>>>>> I've got a handful of nodes on my graph.  Each node has two labels,
>>>>> Entity and Person.  I want to query for all people with a given source 
>>>>> that
>>>>> have a certain first name.  The naive way of doing this is:
>>>>>
>>>>> MATCH (n:Person)
>>>>> WHERE n.first_name = 'John' AND n.source = "form1"
>>>>> RETURN n;
>>>>>
>>>>> The profiler shows:
>>>>>
>>>>> Filter(pred="Property(n,source(10)) == Literal(form1)", _rows=2, 
>>>>> _db_hits=2)
>>>>> SchemaIndex(identifier="n", _db_hits=0, _rows=2, label="Person",
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>     query="Literal(John)", identifiers=["n"], property="first_name",
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>     producer="SchemaIndex")
>>>>>
>>>>> So, obviously it's not using the Entity(source) index.  Time to
>>>>> declare it.
>>>>>
>>>>> MATCH (n:Entity:Person)
>>>>> USING INDEX n:Person(first_name)
>>>>> USING INDEX n:Entity(source)
>>>>> WHERE n.first_name = "John" AND n.source = "form1"
>>>>> RETURN n;
>>>>>
>>>>> The profiler shows that it's hitting both indexes:
>>>>>
>>>>> SchemaIndex(identifier="n", _db_hits=0, _rows=8, label="Entity",
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>     query="Literal(form1)", identifiers=["n"], property="source",
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>     producer="SchemaIndex")
>>>>> SchemaIndex(identifier="n", _db_hits=0, _rows=2, label="Person",
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>     query="Literal(John)", identifiers=["n"], property="first_name",
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>     producer="SchemaIndex")
>>>>>
>>>>> However, the returned rows appear to show records with first_name=John
>>>>> OR source=form1.  There are duplicate nodes returned as well, but nothing
>>>>> DISTINCT can't fix.
>>>>>
>>>>> Switching the order of the USING statements still duplicates result
>>>>> nodes, but they seem to reflect the proper intersection.
>>>>>
>>>>> Any insight into this behavior (and guidance) would be greatly
>>>>> appreciated.
>>>>>
>>>>> Regards,
>>>>> ~Aru
>>>>>
>>>>> --
>>>>> 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 [email protected].
>>>>> 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 [email protected].
>>>> 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 [email protected].
>>> 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 [email protected].
>> 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 [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to