SolrParams conversion to NamedList and back to SolrParams misses the Arrays
with more than one value
----------------------------------------------------------------------------------------------------
Key: SOLR-1666
URL: https://issues.apache.org/jira/browse/SOLR-1666
Project: Solr
Issue Type: Bug
Components: search
Affects Versions: 1.4, 1.3
Reporter: Nestor Oviedo
Priority: Minor
When a parameter in a SolrParams instance is an Array that has more than one
element, the method SolrParams.toNamedList() generates a NamedList<Object>
correctly, but when the method SolrParams.toSolrParams() is invoked with that
NamedList instance, the resultant SolrParams instance has that parameter as a
String, wich is the result of the String[].toString() method.
TestCase:
public class TestDismaxQParserPlugin extends DisMaxQParserPlugin {
private Log log = LogFactory.getLog(this.getClass());
public QParser createParser(String qstr, SolrParams localParams,
SolrParams params, SolrQueryRequest req) {
// TestCase with the param facet.field
if(params.getParams(FacetParams.FACET_FIELD) != null) {
// Original Values
log.debug("FACET.FIELD Param - Before");
String[] facetFieldBefore =
params.getParams(FacetParams.FACET_FIELD);
log.debug("toString():"+facetFieldBefore.toString());
log.debug("length:"+facetFieldBefore.length);
log.debug("Elements:");
for(String value : facetFieldBefore)
log.debug("[class
"+value.getClass().getName()+"] "+value);
// Transforming
NamedList<Object> paramsList = params.toNamedList();
params = SolrParams.toSolrParams(paramsList);
// Result Values
log.debug("FACET.FIELD Param - After");
String[] facetFieldAfter =
params.getParams(FacetParams.FACET_FIELD);
log.debug("toString():"+facetFieldAfter.toString());
log.debug("length:"+facetFieldAfter.length);
log.debug("Elements:");
for(String value : facetFieldAfter)
log.debug("[class
"+value.getClass().getName()+"] "+value);
} else {
log.debug("FACET.FIELD NOT SPECIFIED");
}
return super.createParser(qstr, localParams, params, req);
}
}
Editing the solrconfig.xml file for this QueryParser to be used and using an
URL like
"http://host:port/path/select?q=something&facet=true&facet.field=subject&facet.field=date"
the output is (only the interesting lines):
FINA: FACET.FIELD Param - Before
FINA: toString():[Ljava.lang.String;@c96ad7c
FINA: length:2
FINA: Elements:
FINA: [class java.lang.String] subject
FINA: [class java.lang.String] date
FINA: FACET.FIELD Param - After
FINA: toString():[Ljava.lang.String;@44775121
FINA: length:1
FINA: Elements:
FINA: [class java.lang.String] [Ljava.lang.String;@c96ad7c
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.