lucene-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Hoss Man (JIRA)" <>
Subject [jira] [Resolved] (SOLR-8001) Using value sources on a multi-valued field can result in an exception if no data
Date Thu, 03 Sep 2015 18:13:46 GMT


Hoss Man resolved SOLR-8001.
       Resolution: Fixed
    Fix Version/s: 5.4

thanks david.

> Using value sources on a multi-valued field can result in an exception if no data
> ---------------------------------------------------------------------------------
>                 Key: SOLR-8001
>                 URL:
>             Project: Solr
>          Issue Type: Bug
>    Affects Versions: 5.3
>            Reporter: David Smiley
>            Assignee: Hoss Man
>            Priority: Minor
>             Fix For: 5.4
>         Attachments: SOLR-8001.patch
> SOLR-2522 Introduced the ability to reference a multi-valued field with doc values in
a function query (value source) such as like this (an example using it for sorting): {{sort=field(myMultiValField,min)
asc}}.  In the event that the document has no values for this field, this feature behaves
nicely in the aforementioned example.  And it does if you reference in a 'fl' (as a DocTransformer):
{{fl=id,myMultiValField:field(myMultiValField,min)}}.  In that case, the returned document
simply doesn't have a name-value pair.  *But*, if you sort on a more complex function that
incorporates this, then you get an ArrayIndexOutOfBoundsException.  Such as this:
> {{sort=sum(otherField,field(myMultiValField,min)) asc}}  There may be other conditions
where this same exception will be thrown; not sure.
> The root cause can either be considered one of two things (or both) I think:
> * The longVal, intVal, etc. methods on FunctionValues need to be prepared for the possibility
that the document has no data, in which case it should return a default value.  This means
TrieLongField (& friends) are erroneous.
> * ValueSource.ValueSourceComparator could/should (?) call {{exists}} before calling {{doubleVal}}
in the various methods where it does.
> ----
> A workarround for Solr 5.3 users that should work in any situation is to wrap the {{field}}
function in a {{def}} function since that forces an existence check before attempting to access
the value (ie: use {{sort=def(field(mult_field,min),0)+asc}} instead of {{sort=field(mult_field,min)+asc}})

This message was sent by Atlassian JIRA

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message