[ 
https://issues.apache.org/jira/browse/OAK-5448?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Chetan Mehrotra updated OAK-5448:
---------------------------------
    Description: 
Aggregate logic in oak-lucene currently tries to apply matcher on each of the 
child node of a modified parent node. This is required for those case where 
pattern involves wild card like aggregating '\*/\*/\*' pattern.

However this performs poorly if the aggregate does not involve pattern. For 
e.g. if we have defined a property definition for 'jcr:content/@status' for 
nt:base

{noformat}
  + indexRules 
   + nt:base 
    + properties 
     + status 
      - name = "jcr:content/status"
      - propertyIndex = true
{noformat}

For above definition current logic would try to apply the matcher for 
'jcr:content' on each of the child nodes. So if we have a folder have 1000 
entries it would read that many child nodes. 

As a fix we should check if the aggregate path has wild card or not. if its 
specific then aggregate logic should directly lookup child with given name

  was:
Aggregate logic in oak-lucene currently tries to apply matcher on each of the 
child node of a modified parent node. This is required for those case where 
pattern involves wild card like aggregating '*/*/*' pattern.

However this performs poorly if the aggregate does not involve pattern. For 
e.g. if we have defined a property definition for 'jcr:content/@status' for 
nt:base

{noformat}
  + indexRules 
   + nt:base 
    + properties 
     + status 
      - name = "jcr:content/status"
      - propertyIndex = true
{noformat}

For above definition current logic would try to apply the matcher for 
'jcr:content' on each of the child nodes. So if we have a folder have 1000 
entries it would read that many child nodes. 

As a fix we should check if the aggregate path has wild card or not. if its 
specific then aggregate logic should directly lookup child with given name


> Aggregate logic should optimize for case where patterns do not include 
> wildcard
> -------------------------------------------------------------------------------
>
>                 Key: OAK-5448
>                 URL: https://issues.apache.org/jira/browse/OAK-5448
>             Project: Jackrabbit Oak
>          Issue Type: Improvement
>          Components: lucene
>            Reporter: Chetan Mehrotra
>            Assignee: Chetan Mehrotra
>             Fix For: 1.5.18, 1.6
>
>
> Aggregate logic in oak-lucene currently tries to apply matcher on each of the 
> child node of a modified parent node. This is required for those case where 
> pattern involves wild card like aggregating '\*/\*/\*' pattern.
> However this performs poorly if the aggregate does not involve pattern. For 
> e.g. if we have defined a property definition for 'jcr:content/@status' for 
> nt:base
> {noformat}
>   + indexRules 
>    + nt:base 
>     + properties 
>      + status 
>       - name = "jcr:content/status"
>       - propertyIndex = true
> {noformat}
> For above definition current logic would try to apply the matcher for 
> 'jcr:content' on each of the child nodes. So if we have a folder have 1000 
> entries it would read that many child nodes. 
> As a fix we should check if the aggregate path has wild card or not. if its 
> specific then aggregate logic should directly lookup child with given name



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to