I get this strange error message can not sort on multivalued field: fieldname in all indexed fields. This is a complete error message from solr
</head><body><h1>HTTP Status 400 - can not sort on multivalued field: price</h1><hr/><p><b>type</b> Status report</p><p><b>message</b>can not sort on multivalued field: price</p><p><b>description</b>The request sent by the client was syntactically incorrect (can not sort on multivalued field: price).</p><hr/><h3>GlassFish Server Open Source Edition 3.1</h3></body></html>
I am sure my indexed field does not have multiValued=true set to
<field name="price" type="float" indexed="true" stored="true" multivalued="false" />
so that I add multiValued=false , but I still get the same error.
This is a url request sent to solr
http://localhost:8080/apache-solr-3.1.0/select?wt=ruby&q=flat&fl=_id&sort=price+asc&limit=5&offset=0
and the corresponding rsolr call
res = solr.get 'select', :params => { :q =>'flat', :fl => "_id", :sort=>'price asc', 'limit' => 5, 'offset' => 0 }
Everything works fine if I remove the sort from the query.
Can someone help me.
PS: I have only one single-valued field in the document, but this is not used in sorting
Update
Here's the full stack trace from solr log
[#|2011-12-06T16:03:35.813+0530|SEVERE|glassfish3.1|org.apache.solr.core.SolrCore|_ThreadID=22;_ThreadName=Thread-1;|org.apache.solr.common.SolrException: can not sort on multivalued field: price at org.apache.solr.schema.SchemaField.checkSortability(SchemaField.java:161) at org.apache.solr.schema.TrieField.getSortField(TrieField.java:128) at org.apache.solr.schema.SchemaField.getSortField(SchemaField.java:144) at org.apache.solr.search.QueryParsing.parseSort(QueryParsing.java:385) at org.apache.solr.search.QParser.getSort(QParser.java:251) at org.apache.solr.handler.component.QueryComponent.prepare(QueryComponent.java:102) at org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:173) at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:129) at org.apache.solr.core.SolrCore.execute(SolrCore.java:1372) at org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:356) at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:252) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:215) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:279) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595) at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:98) at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:91) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:162) at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:326) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:227) at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:170) at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:822) at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:719) at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1013) at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225) at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137) at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104) at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90) at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79) at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54) at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59) at com.sun.grizzly.ContextTask.run(ContextTask.java:71) at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532) at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513) at java.lang.Thread.run(Thread.java:662) |
Update2:
As suggested by @Mategi, I got the field details from the schema page. see below
Field: price Field Type: FLOAT Properties: Indexed, Tokenized, Stored, Multivalued, Omit Norms Schema: Indexed, Tokenized, Stored, Multivalued, Omit Norms Index: Indexed, Tokenized, Stored, Omit Norms Index Analyzer: org.apache.solr.analysis.TokenizerChain DETAILS Query Analyzer: org.apache.solr.analysis.TokenizerChain DETAILS
It indicates that the price field is tokenized and multivalued . Not only this field is interesting, but the whole other field is also ambiguous.