[ https://issues.apache.org/jira/browse/SOLR-8001?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14729088#comment-14729088 ]
David Smiley commented on SOLR-8001: ------------------------------------ +1 Nice work [~hossman]. The patch looks good. > Using value sources on a multi-valued field can result in an exception if no > data > --------------------------------------------------------------------------------- > > Key: SOLR-8001 > URL: https://issues.apache.org/jira/browse/SOLR-8001 > Project: Solr > Issue Type: Bug > Affects Versions: 5.3 > Reporter: David Smiley > Assignee: Hoss Man > Priority: Minor > 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 (v6.3.4#6332) --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org For additional commands, e-mail: dev-h...@lucene.apache.org