The same advice still applies, a year on. order only matters for fields of the same name. the association between one parameter name and another is by index (which is why order for parameters of the same name do matter).
I'll construct an example around a salary field, since that's the thread you've taken up (0 - 1000 with gap of 100).
/select?q=*:*&facet=true&facet.range=salary&facet.range.start=0&facet.range.end=1000&facet.range.gap=100
Simple, right... now, i'm going to jumble up the order of parameters, would you expect this not to work?
/select?q=*:*&facet.range.end=1000&facet.range.gap=100&facet.range=salary_id&facet.range.start=0&facet=true
It does work, because order for differently named parameters DOESN'T MATTER.
Now, lets pose a case where some ordering does matter, specifically, if we have more than one facet range going on, for this, i'll suppose the same field (though doesn' tmatter if its not) but with different range parameters (100 - 500 with a gap of 10):
/select?q=*:*&facet=true&facet.range=salary&facet.range.start=0&facet.range.end=1000&facet.range.gap=100&facet.range=salary&facet.range.start=100&facet.range.end=500&facet.range.gap=10
Now, to illustrate my point about where ordering matters, lets group each similarly named parameter together:
/select?q=*:*&facet=true&facet.range=salary&facet.range=salary&facet.range.start=0&facet.range.start=100&facet.range.end=1000&facet.range.end=500&facet.range.gap=100&facet.range.gap=10
Notice, that each paramater name (e.g. facet.range.start) still appears in the same order relative to others of the same name, but its relation to the rest of the parameters doesn't matter.
This is the same thing you are doing when specifying your parameters for the PHP client. Our first would have looked like:
$params = array(
"facet" => "true",
"facet.range" => "salary",
"facet.range.start" => "0",
"facet.range.end" => "1000",
"facet.range.gap" => "100"
);
now with 2 ranges:
$params = array(
"facet" => "true",
"facet.range" => array(
"salary", // first ranges field
"salary" // second ranges field
),
"facet.range.start" => array(
"0", // first range's start
"100" // second range's start
),
"facet.range.end" => array(
"1000", // first range's end
"500" // second range's end
)
"facet.range.gap" => array(
"100", // first range's gap
"10" // second range's gap
)
);
Hope this illustrates the point
Donovan