Needs to utilize the "Set Params" rule type to accomplish this. It will require a 3 column (Policy, Name, Value) table to capture these types of rules.
Solr implementation:
params_keys: request parameter name, must align with param_values
and param_policies
, string, multivalued
params_values: request parameter value, must align with param_keys
and param_policies
, string, multivalued
params_policies: request parameter policy, either append
or replace
, must align with param_keys
and param_values
, string, multivalued
set_params documents examples
{"tags":["TEST"],"id":"block-kingbed","type":"set_params","search_terms":"king bed","param_keys":["fq"],"param_values":["*:* -(_text_:\"bedhead\")"],"param_policies":["append"],"param_modes":["phrase"]}
{"tags":["TEST"],"id":"sp-createAShop-purses2_set-query-params","type":"set_params","search_terms":"purses","param_keys":["q","qf","q.op"],"param_values":["CategoryID:7905 CategoryID:7907 CategoryID:7910 CategoryID:7902","CategoryID:7905^40 CategoryID:7907^30 CategoryID:7910^20 CategoryID:7902^10","OR"],"param_policies":["replace","replace","replace"]}
Fusion’s query pipeline javascript stage for set_params handling:
case 'set_params':
for (var px=0; px < rule_doc.param_keys.size(); px++) {
switch (rule_doc.param_policies[px]) {
case 'append':
request.addParam(rule_doc.param_keys[px], rule_doc.param_values[px]);
break
case 'replace':
request.putSingleParam(rule_doc.param_keys[px], rule_doc.param_values[px]);
break
}
}
break;