[hibernate-dev] [HSearch] Facet drilldown

Emmanuel Bernard emmanuel at hibernate.org
Mon Mar 14 11:59:13 EDT 2011


On 14 mars 2011, at 16:33, Hardy Ferentschik wrote:
>> - move Facet methods hosted on FTQuery to a FacetManager interface and do ftQuery.getFacetManager().enableFacet("cdscds");
> no sure about this one. What other benefits does this approach have except the reuse for the JPA query?

My concerns are:
 - it's easier for someone to know what operations are available wrt faceting if there is an interface to host them all and have a nice JavaDoc + code example
 - it seems this feature is still in flux so adding new methods related to faceting is a real possibility in the future
 - with the most simple approach, we already have 3 methods related to faceting. The the alternative one, we are at 4 methods.

In a nutshell, the current approach is less future proof in an area that will probably evolve / improve.

> 
>> - make FacetRequest / FacetResults interfaces?
> After discussion this morning I actually got rid of FacetResult, since in the end one is only interested in
> the actual Facets.

What are you returning then?
Map<String,List<Facet>> getFacetResults?

I'm not a huge fan:
 - I find it more cryptic than
 - one cannot really rely on equals / hashCode if needed (not sure that's necessary though)
 - you have to be sure that you will never ever need to add addition contextual information on the concept of results
 - the toString is nicer :)

> 
>> - Facet should implement equals / hashCode or else we cannot remember the facet selected
> +1
> 
>> - //TODO should the index be included in object Facet? Not sure but worth thinking about => probably not if Facet objects change indexes from one query to the other
> Not sure what you mean.

I was thinking of adding getIndex on Facet as it is likely to be the link between a UI fwk and Hibernate Search but adding this info would cause more problems than it solves.

> 
>> - should we rename Facet to FacetElement? We seem to talk about Facets as the global concept whereas Facet the object represent one of the results of the Facet.
> For me the global concept is "Faceting" and a Facet is indeed a single result.
> But I see where you are coming from. We call it FacetRequest and enableFacet()
> Maybe we should rename these though. FacetingRequest? It's just so much
> harder to pronounce ;-)

I'd go for faceting on the upper objects. That'd be clearer to be.
Faceting is pronounced Facet - ing :)



More information about the hibernate-dev mailing list