Glad it's working out. I should have added that for a small set of distinct terms the performance diff between contains and prefix is probably um-measurable. If your field has 100 distinct tokens (number from thin air) well, computers are really fast....
Best Erick On Sat, Jul 4, 2015 at 1:45 AM, Pritam Kute <pritam.k...@hotwaxsystems.com> wrote: > Thanks Eric for your kind help. > > The field I am using is of string type and I tried escaping also, but still > facet.contains doesn't work for it. > > As you said facet.contains is expensive, I tried facet.prefix in place and > it is working fine for my requirement. > > Thanks again. > > Thanks & Regards > -- > Pritam Kute > > On Fri, Jul 3, 2015 at 10:13 PM, Erick Erickson <erickerick...@gmail.com> > wrote: > >> Facets are collected over _tokens_, so the idea >> of a token containing a space is kind of odd. You >> _might_ be able to get past the parsing error by >> escaping the space. >> >> But I doubt that's what you want. I'm assuming that >> the field is a text field, broken up by whitespace >> or similar. In that case, there's no token at all >> that contains Student Name as that is two tokens. >> So I don't think this does what you intend even if >> you get past the parser. >> >> OTOH, if it's a string type you might get what you want >> by escaping. >> >> Now, all that said, what is the point here? Contains >> will always be more expensive as it has to iterate >> all of the terms to see if any match. If you _know_ >> the tokens, even facet.prefix would be better. Or >> facet.query. Or.... >> >> Best, >> Erick >> >> >> >> On Thu, Jul 2, 2015 at 11:56 PM, Pritam Kute >> <pritam.k...@hotwaxsystems.com> wrote: >> > Hello All, >> > >> > I am new user to solr and using solr 5.2.0 setup. I am trying to create >> > multiple types of facets on same field. I am filtering the facets by >> using " >> > *facet.contains*". The following is the data into field. >> > >> > roles : { >> > "0/Student Name/", >> > "1/Student Name/1000/", >> > "0/Center Name/", >> > "1/Center Name/1000/" >> > } >> > >> > I am trying to add facet field like following: >> > >> > query.addFacetField("{!ex=role"+i+" key=role"+i+" >> > facet.contains=/"+roleType+"/}roles"); >> > >> > where, roleType is iterated and it contains values "Student Name", >> "Center >> > Name" etc. and value of i is 1. >> > >> > But I am getting error as: >> > >> > org.apache.solr.search.SyntaxError: Expected identifier at pos 63 >> > str='{!key=role1 facet.contains=/Student Name/}roles' >> > >> > It works nicely if there is no any space in the string. i.e. if I index >> doc >> > as "1/StudentName/1000/". >> > >> > It would be great help if somebody helps me out in this issue. Please >> > replay if I am missing something in this. Or point me to best practice of >> > doing hierarchical faceting in solr. >> > >> > Thanks in advance. >> > >> > Thanks & Regards, >> > -- >> > Pritam Kute >>