[
https://issues.apache.org/jira/browse/SOLR-9510?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16369636#comment-16369636
]
Andrey Kudryavtsev edited comment on SOLR-9510 at 2/20/18 1:42 AM:
-------------------------------------------------------------------
Not sure that I fully understand how "expand parents docset" part will work (it
will just execute parent BJQ again, but without excluded child clause, right?),
but have a theoretical question.
Assume someone will implement "global" feature for JSON API ([like you
know|https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-global-aggregation.html])
to calculate facet on whole index and will calculate same
{{comments_for_author}} facet like this:
{code:java}
...
comments_for_author:{
global:{},
domain:{
blockChildren:"type_s:book",
filter:"{!filters params=$child.fq excludeTags=author v=$childquery}"
}
...{code}
Would it be faster then "expand parents docset"? What is your gut feeling about
it?
was (Author: werder):
Not sure that I fully understand how "expand parents docset" part will work (it
will just execute parent BJQ again, but without excluded child clause, right?),
but have a theoretical question.
Assume someone will implement "global" feature for JSON API ([like you
know|http://example.com/]) to calculate facet on whole index and will calculate
same {{comments_for_author}} facet like this:
{code:java}
...
comments_for_author:{
global:{},
domain:{
blockChildren:"type_s:book",
filter:"{!filters params=$child.fq excludeTags=author v=$childquery}"
}
...{code}
Would it be faster then "expand parents docset"? What is your gut feeling about
it?
> child level facet exclusions
> ----------------------------
>
> Key: SOLR-9510
> URL: https://issues.apache.org/jira/browse/SOLR-9510
> Project: Solr
> Issue Type: Improvement
> Security Level: Public(Default Security Level. Issues are Public)
> Components: Facet Module, faceting, query parsers
> Reporter: Mikhail Khludnev
> Priority: Major
> Attachments: SOLR_9510.patch, SOLR_9510.patch, SOLR_9510.patch,
> SOLR_9510.patch, SOLR_9510.patch
>
>
> h2. Challenge
> * Since SOLR-5743 achieved block join child level facets with counts roll-up
> to parents, there is a demand for filter exclusions.
> h2. Context
> * Then, it's worth to consider JSON Facets as an engine for this
> functionality rather than support a separate component.
> * During a discussion in SOLR-8998 [a solution for block join with child
> level
> exclusion|https://issues.apache.org/jira/browse/SOLR-8998?focusedCommentId=15487095&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-15487095]
> has been found.
>
> h2. Proposal
> It's proposed to provide a bit of syntax sugar to make it user friendly,
> believe it or not.
> h2. List of improvements
> * introducing a local parameter {{filters}} for {{\{!parent}} query parser
> referring to _multiple_ filters queries via parameter name: {{\{!parent
> filters=$child.fq ..}..&child.fq=color:Red&child.fq=size:XL}}
> these _filters_ are intersected with a child query supplied as a subordinate
> clause.
> * introducing {{\{!filters params=$child.fq excludeTags=color
> v=$subq}&subq=text:word&child.fq={!tag=color}color:Red&child.fq=size:XL}} it
> intersects a subordinate clause (here it's {{subq}} param, and the trick is
> to refer to the same query from {{\{!parent}}}), with multiple filters
> supplied via parameter name {{params=$child.fq}}, it also supports
> {{excludeTags}}.
> h2. Notes
> Regarding the latter parser, the alternative approach might be to move into
> {{domain:\{..}}} instruction of json facet. From the implementation
> perspective, it's desired to optimize with bitset processing, however I
> suppose it's might be deferred until some initial level of maturity.
> h2. Example
> {code}
> q={!parent which=type_s:book filters=$child.fq
> v=$childquery}&childquery=comment_t:good&child.fq={!tag=author}author_s:yonik&child.fq={!tag=stars}stars_i:(5
> 3)&wt=json&indent=on&json.facet={
> comments_for_author:{
> type:query,
> q:"{!filters params=$child.fq excludeTags=author v=$childquery}",
> "//note":"author filter is excluded",
> domain:{
> blockChildren:"type_s:book",
> "//":"applying filters here might be more promising"
> }, facet:{
> authors:{
> type:terms,
> field:author_s,
> facet: {
> in_books: "unique(_root_)"
> }
> }
> }
> } ,
> comments_for_stars:{
> type:query,
> q:"{!filters params=$child.fq excludeTags=stars v=$childquery}",
> "//note":"stars_i filter is excluded",
> domain:{
> blockChildren:"type_s:book"
> }, facet:{
> stars:{
> type:terms,
> field:stars_i,
> facet: {
> in_books: "unique(_root_)"
> }
> }
> }
> }
> }
> {code}
> Votes? Opinions?
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]