summaryrefslogtreecommitdiffstatshomepage
path: root/docs/usage/filtering.rst
blob: 05066fb7e3df49ffede775ad7e0a9ea1e1ffdda7 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
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.