Details
-
Bug
-
Status: Patch Available
-
Major
-
Resolution: Unresolved
-
4.7, 4.8
-
None
-
None
Description
After upgrading from 4.5.1 to 4.7+, a schema including a "*" dynamic field as text gets a cast exception when using a sort function and result grouping.
Repro (with example config):
- Add "*" dynamic field as a TextField, eg:
<dynamicField name="*" type="text_general" multiValued="true" />
- Create sharded collection
curl 'http://localhost:8983/solr/admin/collections?action=CREATE&name=test&numShards=2&maxShardsPerNode=2'
- Add example docs (query must have some results)
- Submit query which sorts on a function result and uses result grouping:
{ "responseHeader": { "status": 500, "QTime": 50, "params": { "sort": "sqrt(popularity) desc", "indent": "true", "q": "*:*", "_": "1403709010008", "group.field": "manu", "group": "true", "wt": "json" } }, "error": { "msg": "java.lang.Double cannot be cast to org.apache.lucene.util.BytesRef", "code": 500 } }
Source exception from log:
ERROR - 2014-06-25 08:10:10.055; org.apache.solr.common.SolrException; java.lang.ClassCastException: java.lang.Double cannot be cast to org.apache.lucene.util.BytesRef at org.apache.solr.schema.FieldType.marshalStringSortValue(FieldType.java:981) at org.apache.solr.schema.TextField.marshalSortValue(TextField.java:176) at org.apache.solr.search.grouping.distributed.shardresultserializer.SearchGroupsResultTransformer.serializeSearchGroup(SearchGroupsResultTransformer.java:125) at org.apache.solr.search.grouping.distributed.shardresultserializer.SearchGroupsResultTransformer.transform(SearchGroupsResultTransformer.java:65) at org.apache.solr.search.grouping.distributed.shardresultserializer.SearchGroupsResultTransformer.transform(SearchGroupsResultTransformer.java:43) at org.apache.solr.search.grouping.CommandHandler.processResult(CommandHandler.java:193) at org.apache.solr.handler.component.QueryComponent.process(QueryComponent.java:340) at org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:218) at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:135) ...
It looks like serializeSearchGroup is matching the sort expression as the "*" dynamic field, which is a TextField in the repro.
Attachments
Attachments
Issue Links
- is duplicated by
-
SOLR-11961 group.query and sort with function getting error in solrcloud
- Resolved
- is related to
-
SOLR-11042 Sort by function query: throw exception if can't parse
- Open
-
SOLR-10659 remove ResponseBuilder.getSortSpec use in SearchGroupShardResponseProcessor
- Resolved
- relates to
-
SOLR-9627 add QParser.getSortSpec, deprecate misleadingly named QParser.getSort
- Resolved
-
SOLR-9660 in GroupingSpecification factor [group](sort|offset|limit) into [group](sortSpec)
- Resolved
-
SOLR-9783 remove no-longer-needed sortWithinGroup null checks in (Search|Top)Group[s]ShardResponseProcessor
- Resolved
-
SOLR-9890 factor out ShardResultTransformerUtils.[un]marshSortValue methods
- Resolved
-
SOLR-10394 search.grouping.Command rename: getSortWithinGroup --> getWithinGroupSort
- Closed