Filtering ========= A filter is a combination of predicates that have to be satisfied. **hircine** provides a filter interface that allows using almost any type of metadata as a predicate and can therefore build complex and expressive queries. .. image:: /_images/filtering.jpg :align: center :alt: Filtering comics If given multiple types of predicates, all of them have to match. If one type of predicate contains multiple selections, the selected mode determines how they are combined: +----------------------+--------------------------------------------------+ | Mode | Behaviour | +======================+==================================================+ | ∀ ("for all") | matches if all given entities match | +----------------------+--------------------------------------------------+ | ∃ ("there exists") | matches if any of the given entities match | +----------------------+--------------------------------------------------+ | = ("exactly") | matches if entities are present exactly as given | +----------------------+--------------------------------------------------+ For example, in the picture above, a comic only matches if *all* of the following is true: - It is tagged as ``female:idol`` or ``:tights``. - It is tagged with the artist ``40hara``. - It is rated as *Questionable*. - It is uncensored. - It is in any language except Japanese. Matching empty sets ------------------- Each type of predicate may also match on the ∅ empty set. If enabled, the predicate only matches if the object does not contain any entities of that type. .. important:: If matching on the empty set, make sure there are no selections present in the corresponding dropdown menu, as otherwise the filter will never match.