Multi-select faceting


(Wojciech Durczyński) #1

Hello

I'd like to use multi-select faceting in Elastic Search.
This feature is described on Lucene's Jira:
https://issues.apache.org/jira/browse/LUCENE-3079

I mean following part:

  • evaluation of facet values that would dismiss due to other facet filters
    (Yonik says Solr calls this "multi-select faceting").(realized by
    FacetSearcher.fillFacetsForGuiMode())

Let me explain the last point: For the user a facet query
(color==green) AND (shape==circle OR shape==square)
may look like
Facet color
[ ] (3) red
[x] (5) green
[ ] (7) blue
Facet shape
[x] (9) circle
[ ] (4) line
[x] (2) square
The red/blue/line facet values will display even though the
corresponding documents are not in the result set. Also there is
support for filtered facet values with zero results, so users
understand why they do not get results.

I'm sure that this feature would be very useful.
There is a workaround now - prepare facet requests with complex facet
filters, but it's so difficult sometimes and very ineffective.
Is there a possibility that ES would contain an out-of-the-box solution for
this use case?
I think that the greatest difficulty will be to match facet requests in
query and facet selections (provided probably as filters). Maybe there
should also be a way to convert selected facets into filters to next query
easily?

Regards
Wojciech Durczyński


(Karussell) #2

It is already possible with ES (not sure if you mean that with
'workaround'), but yes, for this specific use case it can go probably
easier. Here is my discussion with Shay:

Feel free to comment there :slight_smile:

Peter.


(Karussell) #3

I think that the greatest difficulty will be to match facet requests in
query and facet selections (provided probably as filters). Maybe there
should also be a way to convert selected facets into filters to next query
easily?

Why do you think its complicated as facets can have a name?


(Wojciech Durczyński) #4

With search filter described here:


this feature is easy to implement.
Thank you.


(system) #5