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

Vikas Saurabh updated OAK-7898:
-------------------------------
    Description: 
Queries such as {noformat} //*[@name = 'Node1' or @text = 
't2']/(rep:facet(text)) {noformat} get split into 2 sub-queries such as 
# {noformat} //*[@name = 'Node1']/(rep:facet(text)) {noformat}
# {noformat} //*[@test = 't2']/(rep:facet(text)) {noformat}

Trivially merging facets (union of labels and sum of counts for same labels) 
across sub-queries in generally wrong because of potential intersection rows. 
But, in common practical cases, intersections aren't a big majority so, albeit 
incorrect, trivial merge shouldn't be off huge amount. Note that usual path 
restrictions and node type restrictions are the most common case with {{OR}} 
and they do have have no intersection in almost all cases.

Also, while we'd re-sort the merged facets but we'd make no attempt to prune 
the list to match limits on facet count implied by index-definitions. This is 
basically for 2 reasons:
* sub-queries might get answered by separate indexes (this could be the case 
with search on different node types)
* merge of facets would happen in query engine and we won't want to route back 
information about index-definition or its semantics from index provider to 
query engine

That said, since it's going to give incorrect result by design, we need to very 
explicit in our documentation.

  was:
Queries such as {noformat} //*[@name = 'Node1' or @text = 
't2']/(rep:facet(text)) {noformat} get split into 2 sub-queries such as 
# {noformat} //*[@name = 'Node1']/(rep:facet(text)) {noformat}
# {noformat} //*[@test = 't2']/(rep:facet(text)) {noformat}

Trivially merging facets (union of labels and sum of counts for same labels) 
across sub-queries in generally wrong because of potential intersection rows. 
But, in common practical cases, intersections aren't a big majority so, albeit 
incorrect, trivial merge shouldn't be off huge amount. Note that usual path 
restrictions and node type restrictions are the most common case with {{OR}} 
and they do have have no intersection in almost all cases.

That said, since it's going to give incorrect result by design, we need to very 
explicit in our documentation.


> Facet queries with UNION should do trivial merge of facets from sub-queries
> ---------------------------------------------------------------------------
>
>                 Key: OAK-7898
>                 URL: https://issues.apache.org/jira/browse/OAK-7898
>             Project: Jackrabbit Oak
>          Issue Type: Sub-task
>          Components: lucene
>            Reporter: Vikas Saurabh
>            Assignee: Vikas Saurabh
>            Priority: Major
>
> Queries such as {noformat} //*[@name = 'Node1' or @text = 
> 't2']/(rep:facet(text)) {noformat} get split into 2 sub-queries such as 
> # {noformat} //*[@name = 'Node1']/(rep:facet(text)) {noformat}
> # {noformat} //*[@test = 't2']/(rep:facet(text)) {noformat}
> Trivially merging facets (union of labels and sum of counts for same labels) 
> across sub-queries in generally wrong because of potential intersection rows. 
> But, in common practical cases, intersections aren't a big majority so, 
> albeit incorrect, trivial merge shouldn't be off huge amount. Note that usual 
> path restrictions and node type restrictions are the most common case with 
> {{OR}} and they do have have no intersection in almost all cases.
> Also, while we'd re-sort the merged facets but we'd make no attempt to prune 
> the list to match limits on facet count implied by index-definitions. This is 
> basically for 2 reasons:
> * sub-queries might get answered by separate indexes (this could be the case 
> with search on different node types)
> * merge of facets would happen in query engine and we won't want to route 
> back information about index-definition or its semantics from index provider 
> to query engine
> That said, since it's going to give incorrect result by design, we need to 
> very explicit in our documentation.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to