In trunk, see: * SOLR-2335: New 'field("...")' function syntax for refering to complex field names (containing whitespace or special characters) in functions.
The schema in trunk also specifies: <!-- field names should consist of alphanumeric or underscore characters only and not start with a digit. This is not currently strictly enforced, but other field names will not have first class support from all components and back compatibility is not guaranteed. --> -Yonik http://lucidimagination.com On Thu, May 10, 2012 at 11:28 AM, Iker Huerga <iker.hue...@gmail.com> wrote: > Hi all, > > I am having problems when sorting solr documents using solr functions due > to the field names. > > > Imagine we want to sort the solr documents based on the sum of the scores > of the matching fields. These field are created as follows > > > <dynamicField name="foo/bar-*" type="float" indexed="true" stored="true"/> > > > The idea is that these fields store float values as in this example *<field > name="foo/bar-1234"> 50.45</field>* > > > > The examples below illustrate the issue > > > This query - http://URL/solr/select/?q=(*foo/bar-1234*:*)+AND+( > <http://184.73.38.213:8080/solr/select/?q=(EMMeT/Concept-5348008:*)+AND+(EMMeT/Concept-5347854:*)&version=2.2&start=0&rows=10&indent=on&sort=sum(EMMeT/Concept-5348008,EMMeT/Concept-5347854)+desc&wt=json> > *foo/bar*<http://184.73.38.213:8080/solr/select/?q=(EMMeT/Concept-5348008:*)+AND+(EMMeT/Concept-5347854:*)&version=2.2&start=0&rows=10&indent=on&sort=sum(EMMeT/Concept-5348008,EMMeT/Concept-5347854)+desc&wt=json> > *-2345*:*)&version=2.2&start=0&rows=10&indent=on&sort=sum( > *foo/bar-1234*<http://184.73.38.213:8080/solr/select/?q=(EMMeT/Concept-5348008:*)+AND+(EMMeT/Concept-5347854:*)&version=2.2&start=0&rows=10&indent=on&sort=sum(EMMeT/Concept-5348008,EMMeT/Concept-5347854)+desc&wt=json> > , > <http://184.73.38.213:8080/solr/select/?q=(EMMeT/Concept-5348008:*)+AND+(EMMeT/Concept-5347854:*)&version=2.2&start=0&rows=10&indent=on&sort=sum(EMMeT/Concept-5348008,EMMeT/Concept-5347854)+desc&wt=json> > *foo/bar*<http://184.73.38.213:8080/solr/select/?q=(EMMeT/Concept-5348008:*)+AND+(EMMeT/Concept-5347854:*)&version=2.2&start=0&rows=10&indent=on&sort=sum(EMMeT/Concept-5348008,EMMeT/Concept-5347854)+desc&wt=json> > *-2345* )+desc&wt=json > > > > it gives me the following exception > > * > * > > *The request sent by the client was syntactically incorrect (sort param > could not be parsed as a query, and is not a field that exists in the > index: sum(foo/bar-1234,foo/bar-2345)).* > > > Whereas if I rename the field removing the "/" and "-" the following query > will work - > > http://URL/solr/select/?q=(*bar1234*:*)+AND+(*bar2345*:*)&version=2.2&start=0&rows=10&indent=on&sort=sum( > <http://184.73.38.213:8080/solr/select/?q=(Concept5348008:*)+AND+(Concept5347854:*)&version=2.2&start=0&rows=10&indent=on&sort=sum(Concept5348008,Concept5347854)+desc&wt=json> > *bar1234*<http://184.73.38.213:8080/solr/select/?q=(Concept5348008:*)+AND+(Concept5347854:*)&version=2.2&start=0&rows=10&indent=on&sort=sum(Concept5348008,Concept5347854)+desc&wt=json> > , > *bar2345*<http://184.73.38.213:8080/solr/select/?q=(Concept5348008:*)+AND+(Concept5347854:*)&version=2.2&start=0&rows=10&indent=on&sort=sum(Concept5348008,Concept5347854)+desc&wt=json> > )+desc&wt=json > > > > "response":{"numFound":2,"start":0,"docs":[ > > { > > "primaryDescRes":"DescRes2", > > " > *bar1234*<http://184.73.38.213:8080/solr/select/?q=(Concept5348008:*)+AND+(Concept5347854:*)&version=2.2&start=0&rows=10&indent=on&sort=sum(Concept5348008,Concept5347854)+desc&wt=json> > ":45.54, > > " > *bar2345*<http://184.73.38.213:8080/solr/select/?q=(Concept5348008:*)+AND+(Concept5347854:*)&version=2.2&start=0&rows=10&indent=on&sort=sum(Concept5348008,Concept5347854)+desc&wt=json> > ":100.0}, > > { > > "primaryDescRes":"DescRes1", > > " > *bar1234*<http://184.73.38.213:8080/solr/select/?q=(Concept5348008:*)+AND+(Concept5347854:*)&version=2.2&start=0&rows=10&indent=on&sort=sum(Concept5348008,Concept5347854)+desc&wt=json> > ":100.5, > > " > *bar2345*<http://184.73.38.213:8080/solr/select/?q=(Concept5348008:*)+AND+(Concept5347854:*)&version=2.2&start=0&rows=10&indent=on&sort=sum(Concept5348008,Concept5347854)+desc&wt=json> > ":25.22}] > > }} > > > > I tried escaping the character as indicated in solr documentation [1], i.e. > foo%2Fbar-12345 instead of foo/bar-12345, without success > > > > Could this be caused by the query parser? > > > I would be extremely grateful if you could let me know any workaround for > this > > > > Best > > Iker > > > > [1] > http://wiki.apache.org/solr/SolrQuerySyntax#NOTE:_URL_Escaping_Special_Characters > > -- > Iker Huerga > http://www.ikerhuerga.com/