/!\ Please link to from TODO page /!\ I don't have permission to mess with that page :)

From a super high level, here are my thoughts on how complex multifaceted search could work (also called metadata search, guided navigation, browse and search, etc for anyone searching for this).

We add suggestable metadata as part of the product schema, so we could have something like <add>

</add>

some of those fields would obviously have to be custom added to the schema, but that is a 5 minute deal.

Lets say a search happens and our book happens to be in the result set along with 1000 other books. Based on our index, we can scan the resultset and see that the results have three suggestable fields, two of which do not require a preceding field.

We return a list of the attributes and their distinct values for author_first_letter and price_range.

If author_first_letter is specified as S in the next step of the search, then we offer the author attribute and the distinct values of author where author_first_letter = S

If price_range 0-25 is selected, then we don't show price in the metatdata list, since it is not suggestable. We do show the author_first_letter field again though.

If we expand the idea of preceding to hold a coma separated list of necessary preceding fields, then any search manager anywhere should have the flexibility he/she needs to custom tailer the browsing experience. :TODO: continue this line of thought...

I don't think this would be really much more difficult than trying to extract attributes, and it gives people an easier time adiopting this project without shutting down the default functionaity that the TODO list suggests right now.