Filter
Operators overview
type | operator | operand(s) |
---|---|---|
num:* |
=, !=, <, <=, >=, >, in, nin, undef, def | num |
date |
=, !=, <, <=, >=, >, in, nin, undef, def |
date (See here) |
latlon |
=, !=, <, <=, =>, >, undef, def |
center + radius
|
cat:enum |
=, !=, undef, def | dropdown |
CIRI (cat or acc ) |
=, !=, undef, def | [prefix:]key (prefix may be guessed by OR'ing), or search CIRI. Search is done on iri field! |
others | ~=, undef, def | regexp |
Note: regexp can use effectively an index given that it has an anchored prefix (ex: ^abc
). Note that ^abc
is equivalent and faster than ^abc.*
or ^abc.*$
since the search does not need to analyse .*
.
Multiplicity
Each operator has a multiplicity:
operator | multiplicity | note |
---|---|---|
= | multiple | Converted to Mongodb's in
|
!= | multiple | Converted to Mongodb's nin
|
in | 2 | Converted to >= AND <= |
nin | 2 | Converted to < OR > |
<, >, <=, >= | 1 | |
~= | 1 | Use negativ pattern to negate |
undef, def | 0 | Converted to = "" (resp. != "" ) ??? |
Note: For latlon
, <
, <=
, >
, >=
have an extra operand: center
.
Note that =
and !=
do not take the extra operand since center
is implicitly set to 0.
Use near.
Statements and filters
A triplet (attributeRef, operator, operand))
forms a statement.
A group of statements forms a filter. All the statements of a filter are OR'ed.
Multiple filters may be defined and are AND'ed.
Since the operator list contains negatives, NOT is not needed at the statement level.
Note: (A & B) | C
== (A | C) & (B | C)
, but the search pattern A & (B | C)
will be more common and easier to express with conjunction as outer operator.
Serialization
filter=<attr><operator>'<operand1>','<operand2>',...|<attr2><operator2>'<operand1>','<operand2>, ...|...'&filter=...
Indexes
Ideally the following indexes should be created:
-
date
: value -
num
: value -
cat:enum
: value - ciri: _iri
- any others: val
But given the limit of 61 indexes per collections (since we already have id
, valid.start
and valid.end
),
they should be created using a "most used" scheme.