summaryrefslogblamecommitdiffstatshomepage
path: root/docs/usage/filtering.rst
blob: 05066fb7e3df49ffede775ad7e0a9ea1e1ffdda7 (plain) (tree)












































                                                                              
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.