lucene-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Mikhail Khludnev (JIRA)" <j...@apache.org>
Subject [jira] [Comment Edited] (SOLR-9510) child level facet exclusions
Date Sun, 25 Mar 2018 21:20:00 GMT

    [ https://issues.apache.org/jira/browse/SOLR-9510?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16370248#comment-16370248
] 

Mikhail Khludnev edited comment on SOLR-9510 at 3/25/18 9:19 PM:
-----------------------------------------------------------------

hey, yo.. almost without changes in existing code
{code}
     "q", "{!parent tag=top filters=$child.fq which=type_s:book v=$childquery}"
        , "childquery", "comment_t:*"
        , "child.fq", "{!tag=author}author_s:dan"
        , "child.fq", "{!tag=stars}stars_i:4"
        , "fq", "type_s:book"
        , "fl", "id", "fl" , "title_t"
        , "json.facet", "{" +
            "  comments_for_author: {" +
            "    domain: { excludeTags:\"top\"," + // 1. kick away top bjq, however, applying
parent level fqs
            "            blockChildren : \"type_s:book\", " + // 2.getting all children from
enlarged parents
            "             filter:[\"{!filters param=$child.fq " + // 3. filter children with
exclusion 
            "                       excludeTags=author v=$childquery}\"]"
            + "            }," +
            "    type:terms," +
            "    field:author_s," +
            "    facet: {" +
            "           in_books: \"unique(_root_)\" }"+//}}," +
            "  }" +
{code}
patch is coming



was (Author: mkhludnev):
hey, yo.. almost without changes in existing code
{code}
     "q", "{!parent tag=top filters=$child.fq which=type_s:book v=$childquery}"
        , "childquery", "comment_t:*"
        , "child.fq", "{!tag=author}author_s:dan"
        , "child.fq", "{!tag=stars}stars_i:4"
        , "fq", "type_s:book"
        , "fl", "id", "fl" , "title_t"
        , "json.facet", "{" +
            "  comments_for_author: {" +
            "    domain: { excludeTags:\"top\"," + // 1. kick away top bjq, however, applying
parent level fqs
            "            blockChildren : \"type_s:book\", " + // 2.getting all children from
enlarged parents
            "             filter:[\"{!filters params=$child.fq " + // 3. filter children with
exclusion 
            "                       excludeTags=author v=$childquery}\"]"
            + "            }," +
            "    type:terms," +
            "    field:author_s," +
            "    facet: {" +
            "           in_books: \"unique(_root_)\" }"+//}}," +
            "  }" +
{code}
patch is coming


> 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
>             Fix For: 7.3, master (8.0)
>
>         Attachments: SOLR-9510.patch, SOLR_9510.patch, SOLR_9510.patch, SOLR_9510.patch,
SOLR_9510.patch, SOLR_9510.patch, SOLR_9510.patch, SOLR_9510.patch, SOLR_9510.patch, SOLR_9510.patch,
SOLR_9510.patch, 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
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 param=$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 {{param=$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:java}
> 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 param=$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 param=$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: dev-unsubscribe@lucene.apache.org
For additional commands, e-mail: dev-help@lucene.apache.org


Mime
View raw message