If it's a requirement to let Solr handle the facet-hierarchy please disregard this post, but an alternative would be to have your App control when to ask for which 'facet-level' (e.g: country, state, city) in the hierarchy.
as follows, each doc has 3 seperate fields (indexed=true, stored=false): - countryid - stateid - cityid facet on country: &facet=on&facet.field=countryid facet on state ( country selected. functionally you probably don't want to show states without the user having selected a country anyway) &facet=on&facet.field=countryid&fq=countryid:<somecountryid> facet on city (state selected, same functional analogy as above) &facet=on&facet.field=cityid&fq=stateid:<somestateid> or facet on city (countryselected, same functional analogy as above) &facet=on&facet.field=cityid&fq=countryid:<somecountryid> grab the resulting facat and drop it under "Location" pros: - reusing fq's (good performance, I've never used hierarchical facets, but would be surprised if it has a (major) speed increase to this method) - flexible (you get multiple hierarchies: country --> state --> city and country --> city) cons: - a little more application logic Hope that helps, Geert-Jan 2010/3/2 Andy <angelf...@yahoo.com> > I read that a simple way to implement hierarchical facet is to concatenate > strings with a separator. Something like "level1>level2>level3" with ">" as > the separator. > > A problem with this approach is that the number of facet values will > greatly increase. > > For example I have a facet "Location" with the hierarchy > country>state>city. Using the above approach every single city will lead to > a separate facet value. With tens of thousands of cities in the world the > response from Solr will be huge. And then on the client side I'd have to > loop through all the facet values and combine those with the same country > into a single value. > > Ideally Solr would be "aware" of the hierarchy structure and send back > responses accordingly. So at level 1 Solr will send back facet values based > on country (100 or so values). Level 2 the facet values will be based on the > states within the selected country (a few dozen values). Next level will be > cities within that state. and so on. > > Is it possible to implement hierarchical facet this way using Solr? > > > >