anchor.diff:  `q= *+title:join* +{!parent which="*content_type:parentDocument*"}comments:SolrCloud`
   ====
   
  -=== Scoring with the Block Join Parent Query Parser
  +==== Filtering and Tagging
  +
  +The `{!parent}` query supports `filters` and `excludeTags` local parameters like the following:
  +
  +[source,text]
  +{!parent which=<allParents> filters=$childfq excludeTags=certain}<someChildren>&
  +childfq=COLOR:Red&
  +childfq=SIZE:XL&
  +childfq={!tag=certain}PRINT:Hatched
  +
  +This is equivalent to:
  +
  +[source,text]
  +{!parent which=<allParents>}+<someChildren> +COLOR:Red +SIZE:XL
  +
  +Notice the "$" syntax in `filters` for referencing queries. Comma-separated tags in `excludeTags` allow excluding certain queries by tagging. Overall the idea is similar to <<faceting.adoc#tagging-and-excluding-filters, excluding fq in facets>>. Note that filtering is applied to the subordinate clause (`<someChildren>`) first, and the intersection result is joined to the parents.
  +
  +==== Scoring with the Block Join Parent Query Parser
   
   You can optionally use the `score` local parameter to return scores of the subordinate query. The values to use for this parameter define the type of aggregation, which are `avg` (average), `max` (maximum), `min` (minimum), `total (sum)`. Implicit default is `none` which returns `0.0`.
  +
  +==== All Parents Syntax
  +
  +When subordinate clause (`<someChildren>`) is omitted, it's parsed as a _segmented_ and _cached_ filter for all parent documents, or more precisely `q={!parent which=<allParents>}` is equivalent to `q=<allParents>`.
   
   == Boolean Query Parser
   
  
positive.code: </result>
  ----
  
  Note that the query for `someParents` should match only parent documents passed by `allParents` or you may get an exception:
  
  [literal]
  Parent query must not match any docs besides parent filter. Combine them as must (+) and must-not (-) clauses to find a problem doc.
  
  In older version the error is:
  
  [literal]
  Parent query yields document which is not matched by parents filter.
  
  You can search for `q=+(someParents) -(allParents)` to find a cause.
  
  === Block Join Parent Query Parser
  
  
negative.code: ----
  
  This example creates a phrase query with "foo" followed by "bar" (assuming the analyzer for `myfield` is a text field with an analyzer that splits on whitespace and lowercase terms). This is generally equivalent to the Lucene query parser expression `myfield:"Foo Bar"`.
  
  == Filters Query Parser
  
  The syntax is:
  
  [literal]
  q={!filters param=$fqs excludeTags=sample}field:text&
  fqs=COLOR:Red&
  fqs=SIZE:XL&
  fqs={!tag=sample}BRAND:Foo
  
  which is equivalent to:
  
  [literal]
  q=+field:text +COLOR:Red +SIZE:XL
  
  `param` local parameter uses "$" syntax to refer to a few queries, where `excludeTags` may omit some of them.
  
  == Function Query Parser
  
  