I'm looking for the name of the pattern or technique whereby one can dynamically choose to add, remove, or alter search criteria. I'm thinking it is mostly (if not fully) rule-driven, but I'm not sure if that's a requirement or just a useful application for the technique.

I'll try to explain briefly how it works. The user is presented with a list (of some sort) of the available search criteria, and when a criteria is chosen it is added to a 'bucket' of criteria where it can be refined or removed.

Let's use a bookstore analogy. The criteria would be "author", "title", "publisher" and "date". If the user selects the "author" criteria, "author" is added to the 'bucket' and given some rule-driven context; for simplicity, let's just say that for "author" you might present the user with a text-input box. Then if the user chooses "date", they are given some means to input a date, and they can choose something like "before" or "after"; at this point, they can add another "date" criteria. This would let them choose "before" in the 1st one, and "after" in the 2nd one (to provide for a min and max search on "date").

The power in this type of search is that at any time before or after running the search, the user can remove (with a small "**x**") any given criteria, or continue piling on more criteria.

I've seen this type of search in the wild, but of course now that I need a working example of it I can't find it, and even if I could find it I wouldn't know what the proper term for the technique is so that I can research it further.

**EDIT:** This site is almost exactly what I'm looking for (where it says *"Use this form to construct your query"*):

<http://opl.bibliocommons.com/search>

There, you're given a single input for positive criteria, and another for negative criteria (though I believe that could be rolled into a single input), and then you choose a criterion and a value. The only aspect missing in the search itself is the granular controls such as "starts with", "greater than", etc. but that seems to be a simple design decision. Also missing, in the results it doesn't give the user the option to disqualify criteria that was previously selected. Again, this looks to be a design decision; I think it would be trivial to re-display the search form again, pre-populated just as the user had entered it. In other words, what I'm looking for is to have the results loaded under the search area so that the criteria could be readjusted if needed.

*Faceted Search* seems to many times use this approach, but I don't believe that this method of building the search criteria is specific to *Faceted Search*. From what I can gather, *Faceted Search* is the practice of giving your searchable items >1 *facets* which you can use to search by. I'm not looking to assign multiple facets to a single data item; the criterion are linear in that I don't believe there is any overlap whereby it'd even be possible to assign multiple *facets*.