|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.apache.solr.search.QParserPlugin org.apache.solr.search.SwitchQParserPlugin
public class SwitchQParserPlugin
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>
Field Summary | |
---|---|
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. |
Fields inherited from class org.apache.solr.search.QParserPlugin |
---|
DEFAULT_QTYPE, standardPlugins |
Constructor Summary | |
---|---|
SwitchQParserPlugin()
|
Method Summary | |
---|---|
QParser |
createParser(String qstr,
SolrParams localParams,
SolrParams params,
SolrQueryRequest req)
return a QParser |
void |
init(NamedList args)
|
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
public static String NAME
public static String SWITCH_CASE
public static String SWITCH_DEFAULT
Constructor Detail |
---|
public SwitchQParserPlugin()
Method Detail |
---|
public void init(NamedList args)
public QParser createParser(String qstr, SolrParams localParams, SolrParams params, SolrQueryRequest req)
QParserPlugin
QParser
createParser
in class QParserPlugin
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |