Hi, there are two relative similar solutions for this problem.
I will describe one of them: * create a multivalued string field called 'category' * you have a category tree. so make sure a document gets not only the leaf category, but all categories (name or id) until the root * now facet over category with '-1' as limit * What if you want to display only the categories of one level? (e.g. if you don't want other level at a time or if they are too much). then use index the category field ala <level>_category and use facet.prefix to filter the category list * clicking on a category entry should result in a filter query ala fq=category:"selectedCategoryWithLevel" the little tricky part is now that your UI or middle tier has to parse the level e.g. 2 and the append 2+1=3 to the query: facet.prefix=3_ * if you filter the level then one question remains: Q: how can you display the path from the selected category until the root category? A: Either get the category parents via DB (which is easy if you store the category ids in solr) or get the parents from the parameter list which is a bit more complicated (in this case I think it is best to store the category names in solr). (The second approach is: instead of using facet.prefix you can use dynamic fields ala category_<level>_s) Did this explaination is missing sth. or unclear? Kind Regards, Peter. > Hi, > > there is a solution without the patch. Here it should be explained: > http://www.lucidimagination.com/blog/2010/08/11/stumped-with-solr-chris-hostetter-of-lucene-pmc-at-lucene-revolution/ > > If not, I will do on 9.10.2010 ;-) > > Regards, > Peter. > > >> I've a similar problem with a project I'm working on now. I am holding out >> for either SOLR-64 or SOLR-792 being a bit more mature before I need the >> functionality but if not I was thinking I could do multi-level faceting by >> indexing the data as a "String" like this: >> >> id: 1 >> SHOE: Sneakers|Men|Size 7 >> >> id: 2 >> SHOE: Sneakers|Men|Size 8 >> >> id: 3 >> SHOE: Sneakers|Women|Size 6 >> >> etc >> >> and then in the UI, show just up to the first delimiter (you'll have to sum >> the counts in the UI too). Once the user clicks on "Sneakers", you would >> then add fq=SHOE:Sneakers|* to the query and then show the values up to the >> 2nd delimiter, etc. >> >> Alternatively, if you didn't want to use a wildcard query, you could index >> each level separately like this: >> >> id: 1 >> SHOE1: Sneakers >> SHOE2: Sneakers|Men >> SHOE3: Sneakers|Men|Size 7 >> >> Then after the user clicks on the 1st level, fq on SHOE1 and show SHOE2, >> etc. This wouldn't work so well if you had more than a few levels in your >> hierarchy. >> >> I haven't actually tried this and like I said I'm hoping I could just use a >> patch (really I hope 3.x gets released GA with the functionality but I won't >> hold my breath...) But I do think this would work in a pinch if need be. >> >> James Dyer >> E-Commerce Systems >> Ingram Content Group >> (615) 213-4311 >> >> >> -----Original Message----- >> From: Nguyen, Vincent (CDC/OD/OADS) (CTR) [mailto:v...@cdc.gov] >> Sent: Tuesday, October 05, 2010 8:22 AM >> To: solr-user@lucene.apache.org >> Subject: RE: multi level faceting >> >> Just to clarify, the effect I was look for was this. >> >> Sneakers >> Men (22) >> Women (43) >> >> AFTER a user filters by one of those, they would be presented with a NEW >> facet field such as >> >> Sneakers >> Men >> Size 7 (10) >> Size 8 (11) >> Size 9 (23) >> >> Vincent Vu Nguyen >> >> -----Original Message----- >> From: Otis Gospodnetic [mailto:otis_gospodne...@yahoo.com] >> Sent: Monday, October 04, 2010 11:44 PM >> To: solr-user@lucene.apache.org >> Subject: Re: multi level faceting >> >> Hi, >> >> I *think* this is not what Vincent was after. If I read the suggestions >> >> correctly, you are saying to use &fq=x&fq=y -- multiple fqs. >> But I think Vincent is wondering how to end up with something that will >> let him >> create a UI with multi-level facets (with a single request), e.g. >> >> Footwear (100) >> Sneakers (20) >> Men (1) >> Women (19) >> >> Dancing shoes (10) >> Men (0) >> Women (10) >> ... >> >> If this is what Vincent was after, I'd love to hear suggestions myself. >> :) >> >> Otis >> ---- >> Sematext :: http://sematext.com/ :: Solr - Lucene - Nutch >> Lucene ecosystem search :: http://search-lucene.com/ >> >> >> >> ----- Original Message ---- >> >> >>> From: Jason Brown <jason.br...@sjp.co.uk> >>> To: solr-user@lucene.apache.org >>> Sent: Mon, October 4, 2010 11:34:56 AM >>> Subject: RE: multi level faceting >>> >>> Yes, by adding fq back into the main query you will get results >>> >>> >> increasingly >> >> >>> filtered each time. >>> >>> You may run into an issue if you are displaying facet counts, as the >>> >>> >> facet >> >> >>> part of the query will also obey the increasingly filtered fq, and so >>> >>> >> not >> >> >>> display counts for other categories anymore from the chosen facet >>> >>> >> (depends if >> >> >>> you need to display counts from a facet once the first value from the >>> >>> >> facet has >> >> >>> been chosen if you get my drift). Local params are a way to deal with >>> >>> >> this by >> >> >>> not subjecting the facet count to the same fq restriction (but >>> >>> >> allowing the >> >> >>> search results to obey it). >>> >>> >>> >>> -----Original Message----- >>> From: Nguyen, Vincent (CDC/OD/OADS) (CTR) [mailto:v...@cdc.gov] >>> Sent: Mon 04/10/2010 16:34 >>> To: solr-user@lucene.apache.org >>> Subject: RE: multi level faceting >>> >>> Ok. Thanks for the quick response. >>> >>> Vincent Vu Nguyen >>> Division of Science Quality and Translation >>> Office of the Associate Director for Science >>> Centers for Disease Control and Prevention (CDC) >>> 404-498-6154 >>> Century Bldg 2400 >>> Atlanta, GA 30329 >>> >>> >>> -----Original Message----- >>> From: Allistair Crossley [mailto:a...@roxxor.co.uk] >>> Sent: Monday, October 04, 2010 9:40 AM >>> To: solr-user@lucene.apache.org >>> Subject: Re: multi level faceting >>> >>> I think that is just sending 2 fq facet queries through. In Solr PHP >>> >>> >> I >> >> >>> would do that with, e.g. >>> >>> $params['facet'] = true; >>> $params['facet.fields'] = array('Size'); >>> $params['fq'] => array('sex' => array('Men', 'Women')); >>> >>> but yes i think you'd have to send through what the current facet >>> >>> >> query >> >> >>> is and add it to your next drill-down >>> >>> On Oct 4, 2010, at 9:36 AM, Nguyen, Vincent (CDC/OD/OADS) (CTR) >>> >>> >> wrote: >> >> >>> >>> >>>> Hi, >>>> >>>> >>>> >>>> I was wondering if there's a way to display facet options based on >>>> previous facet values. For example, I've seen many shopping sites >>>> >>>> >>> where >>> >>> >>>> a user can facet by "Mens" or "Womens" apparel, then be shown >>>> >>>> >> "sizes" >> >> >>> to >>> >>> >>>> facet by (for Men or Women only - whichever they chose). >>>> >>>> >>>> >>>> Is this something that would have to be handled at the application >>>> level? >>>> >>>> >>>> >>>> Vincent Vu Nguyen >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>> >>> >>> If you wish to view the St. James's Place email disclaimer, please >>> >>> >> use the >> >> >>> link below >>> >>> http://www.sjp.co.uk/portal/internet/SJPemaildisclaimer >>> >>> >>> >> >> > > -- http://jetwick.com twitter search prototype