Andrey Kudryavtsev created SOLR-11042:
-----------------------------------------
Summary: Sort by function query: throw exception if can't parse
Key: SOLR-11042
URL: https://issues.apache.org/jira/browse/SOLR-11042
Project: Solr
Issue Type: Improvement
Security Level: Public (Default Security Level. Issues are Public)
Affects Versions: 7.0
Reporter: Andrey Kudryavtsev
Priority: Minor
I have a couple of use cases where I need to sort result list by function query
values (something like {{sort query(..) desc}} or {{sort product(...) asc}} )
Even if that {{...}} could be pretty complicated query with lots of clauses,
this technique worked like a charm until I created a query in incorrect Solr's
syntax , i.e. I created a string which {{FunctionQParser}} failed to parse ( I
had something that in simplification could be described as
{{sort=query($sortQuery) desc&sortQuery=type: a b c}} without proper {{df}} ).
This lead to unexpected behaviour (at least from my pov). See
[SortSpecParsing#parseSortSpecImpl|https://github.com/apache/lucene-solr/blob/e2521b2a8baabdaf43b92192588f51e042d21e97/solr/core/src/java/org/apache/solr/search/SortSpecParsing.java#L88]
:
* FunctionQParser failed to parse query, but exception wasn't thrown:
{code}
catch (Exception e) {
// hang onto this in case the string isn't a full field name either
qParserException = e;;
}
{code}
* Solr tried to handle sorting clause as a field and made a lookup into Schema:
{code}
SchemaField sf = schema.getFieldOrNull(field);
if (null == sf) {
......
{code}
* I had a "match all" field type mapped on {{*}} in schema, and this type was
matched by string {{query($sortQuery)}}
* Then there are two possibilities (and I don't like both of them):
** If "match all" field type is multi valued, there would be an exception
{code}
can not sort on multivalued field: query($sortQuery)
{code}
** If "match all" field type is single valued, then it would try to sort by
values for field {{query($sortQuery)}} (without any exceptions)
I understand (by tests running) from where this error hiding came from.
But what if we will make some basic efforts to help guys like me to detect
errors in syntax as soon as possible (see patch attached) ? WDYT?
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]