At 11:30 PM -0800 2/21/07, Ryan McKinley wrote:
>The question is do we want to add *another* parameter to say "don't
>parse the ; sort even if i don't specify the sort parameter"?
>
>Yes, testing the existence/non-existence of a param is not great - but
>I don't think adding another field is worth it for something this
>small that *can* be accomplished with an empty (or explicit
>'sort=score') parameter. It seems like the effort involved in
>explaining a new parameter is more then saying "if you don't want ';'
>to get parsed as a sorting parameter, make sure to specify a 'sort'
>parameter."
Ryan, I agree with you that adding an extra control parameter is overkill for
something so small.
Another question is whether the ; behavior is considered deprecated with the
introduction of sort=, or maintained ad infinitum as a parallel approach for
sort specification (for StandardRH only, or perhaps for DisMaxRH too if we
introduce a parameter to control the q escaping and ; is not escaped).
If deprecated, then I think version= may be the most elegant way to do that,
per my prior email.
If parallel, then I agree that existence/nonexistence would be the simplest way
to toggle the behavior (from a user perspective). My "uncool" comment was, er,
uncool, but the motivation was that AFAIK in no other place does SOLR make this
distinction, an assumption based on SolrParams not having an API to test for
param existence and being explicitly coded around nonexistence and null being
equatable; meanwhile elsewhere in the code (e.g. parseSort) null and "" are
equated.
So this would constitute a policy change, and one that required a fundamental
(albeit small) API and logic change; for example, in MapSolrParams and
MultiMapSolrParams, one would need to convert present but null-valued Map
entries into "" or String[]{}, respectively, either upon initialization or on
demand in get(key), so things like DefaultSolrParams and the various
SolrParams.getXXX(key, default) can continue to use null as a flag for
not-present. Alternately one could introduce an exists(key) method, but then
every one of those checks for null indicating "use the default" would need to
be changed so null becomes a first-class citizen. Or something like that.
So while such a global policy change would probably be a good thing in the long
run, I fear it's not trivial (unless once again I missed something).
- J.J.