Empty facet combinations should be suppressed in advance
Aliases: zero-result facets · dead-end facets · preemptive suppression
What it is
If intersecting two facet values already yields an empty set, that combination should not wait for the last check to announce “no results.” Suppress in advance means: when one more check would walk into an empty set, remove that check from the choosable set or mark it unavailable, so the empty combination cannot be formed. It protects “every step still has objects,” not a prettier zero-results page. A zero-results page is recovery after the empty set has been entered. Suppression is refusing to let the path be completed.
Both zero stock and logical impossibility can be empty sets. Suppression targets the fact that one more step will empty the set; the reason for emptiness is a separate explanation.
Why it happens
Each faceted step should shrink the set without emptying it. People use “are there still results” to judge whether their constraints remain reasonable. If an empty set can be checked into, feedback is delayed to the last step, and earlier checks cannot be blamed one by one: was color too tight, price too tight, or only both together? Advance suppression turns “this next cut will wipe the set” into a visible property of the current decision, so working memory need not replay the whole constraint chain.
Suppression must be recomputed from the constraints already chosen. Statically deleting “alcohol + infant” is not enough; under live inventory “red + XL + this store” may have just gone empty. Slow or incomplete computation leaves dead ends, or kills combinations that still have hits.
Studying it
Compare “allow walking into empty” with “suppress one step before empty” for how people revise constraints.
- Paradigms: the same facet set, one condition allowing zero results plus a clear-all, another disabling or hiding the next step when it would empty; record how and when constraints are revised. A count preview (N items) can be a third condition.
- Independent variables: timing of suppression (before versus after the check), form (disable versus hide), whether the would-be count is shown.
- Dependent variables: times an empty set is entered, how far people backtrack to revise, task time, rate of concluding that a kind of item does not exist.
- Methodological note: hiding changes the apparent completeness of a facet; people may think the value was never part of the scheme. Ask separately about “thought it didn’t exist” versus “knew it was temporarily out.” Precompute cost affects whether suppression is feasible at real latency; instantaneous lab responses overestimate it.
Where it stops holding
Exploratory lookup sometimes needs to see “this combination currently has none” as a true signal about the market or the collection; total suppression wipes that information. Disable and keep the value visible rather than plucking it out. Logical emptiness (from failed orthogonality) and temporary zero stock should be presented differently, or suppression will treat a taxonomy error as an inventory gap. Huge facet spaces cannot precompute every combination; at least look one step ahead in the neighbourhood of current constraints, and do not claim “all in advance.”
Applying it
- On every change to selected constraints, recompute intersection size for each still-choosable value; mark size-zero values unavailable before they can be checked.
- When unavailable, leave the value and a reason visible (“0 with the current color”) so people do not think the category was deleted.
- Use different copy for logical emptiness and stock emptiness: the former is a taxonomy fix, the latter is restock or relax.
- Verify by walking a path that will empty: the empty set should be unformable before the last check. If “no results” can still be checked into, suppression did not happen. If the value vanishes without a reason, suppression went too far.