public class SwitchQParserPlugin extends QParserPlugin
A QParserPlugin that acts like a "switch/case" statement.
QParser's produced by this plugin will take their primary input string,
trimmed and prefixed with "case.", to use as a key to lookup a
"switch case" in the parser's local params. If a matching local param is
found the resulting param value will then be parsed as a subquery, and
returned as the parse result.
The "case" local param can be optionally be specified as a
switch case to match missing (or blank) input strings.
The "default" local param can optionally be specified
as a default case to use if the input string does not match any other
switch case local params. If default is not specified,
then any input which does not match a switch case local param will result
in a syntax error.
In the examples below, the result of each query would be XXX....
q={!switch case.foo=XXX case.bar=zzz case.yak=qqq}foo
q={!switch case.foo=qqq case.bar=XXX case.yak=zzz} bar // extra whitespace
q={!switch case.foo=qqq case.bar=zzz default=XXX}asdf // fallback on default
q={!switch case=XXX case.bar=zzz case.yak=qqq} // blank input
A practical usage of this QParsePlugin, is in specifying "appends"
fq params in the configuration of a SearchHandler, to
provide a fixed set of filter options for clients using custom parameter
names.
Using the example configuration below, clients can optionally specify the
custom parameters in_stock and shipping to
override the default filtering behavior, but are limited to the specific
set of legal values (shipping=any|free,
in_stock=yes|no|all).
<requestHandler name="/select" class="solr.SearchHandler">
<lst name="defaults">
<str name="in_stock">yes</str>
<str name="shipping">any</str>
</lst>
<lst name="appends">
<str name="fq">{!switch case.all='*:*'
case.yes='inStock:true'
case.no='inStock:false'
v=$in_stock}</str>
<str name="fq">{!switch case.any='*:*'
case.free='shipping_cost:0.0'
v=$shipping}</str>
</lst>
</requestHandler>| Modifier and Type | Field and Description |
|---|---|
static String |
NAME |
static String |
SWITCH_CASE
Used as both a local params key to find the "default" if no
blank input is provided to the parser, as well as a prefix (followed by
'.' for looking up the switch input.
|
static String |
SWITCH_DEFAULT
A local param whose value, if specified, is used if no switch case
matches the parser input.
|
DEFAULT_QTYPE, standardPlugins| Constructor and Description |
|---|
SwitchQParserPlugin() |
| Modifier and Type | Method and Description |
|---|---|
QParser |
createParser(String qstr,
SolrParams localParams,
SolrParams params,
SolrQueryRequest req)
return a
QParser |
void |
init(NamedList args) |
public static String NAME
public static String SWITCH_CASE
public static String SWITCH_DEFAULT
public void init(NamedList args)
public QParser createParser(String qstr, SolrParams localParams, SolrParams params, SolrQueryRequest req)
QParserPluginQParsercreateParser in class QParserPluginCopyright © 2000-2013 Apache Software Foundation. All Rights Reserved.