A search operator specifies how the comparison of a search value and a zettel should be executed.
Every comparison is done case-insensitive, treating all uppercase letters the same as lowercase letters.

The following are allowed search operator characters:

* The exclamation mark character (&ldquo;`!`&rdquo;, U+0021) negates the meaning.
* The equal sign character (&ldquo;`=`&rdquo;, U+003D) compares on equal content (&ldquo;equals operator&rdquo;).
* The tilde character (&ldquo;`~`&rdquo;, U+007E) compares on matching (&ldquo;match operator&rdquo;).
* The left square bracket character (&ldquo;`[`&rdquo;, U+005B) matches if there is some prefix (&ldquo;prefix operator&rdquo;).
* The right square bracket character (&ldquo;`]`&rdquo;, U+005D) compares a suffix relationship (&ldquo;suffix operator&rdquo;).
* The colon character (&ldquo;`:`&rdquo;, U+003A) compares depending on the actual [key type](00001006030000) (&ldquo;has operator&rdquo;).
  In most cases, it acts as an equals operator, but for some type it acts as the match operator.
* The less-than sign character (&ldquo;`<`&rdquo;, U+003C) matches if the search value is somehow less than the metadata value (&ldquo;less operator&rdquo;).
* The greater-than sign character (&ldquo;`>`&rdquo;, U+003E) matches if the search value is somehow greater than the metadata value (&ldquo;greater operator&rdquo;).
* The question mark (&ldquo;`?`&rdquo;, U+003F) checks for an existing metadata key (&ldquo;exist operator&rdquo;).
  In this case no [search value](00001007706000) must be given.

Since the exclamation mark character can be combined with the other operators, there are 18 possible combinations:

1. &ldquo;`!`&rdquo;: is an abbreviation of the &ldquo;`!~`&rdquo; operator.
1. &ldquo;`~`&rdquo;: is successful if the search value matches the value to be compared.
1. &ldquo;`!~`&rdquo;: is successful if the search value does not match the value to be compared.
1. &ldquo;`=`&rdquo;: is successful if the search value is equal to one word of the value to be compared.
1. &ldquo;`!=`&rdquo;: is successful if the search value is not equal to any word of the value to be compared.
1. &ldquo;`[`&rdquo;: is successful if the search value is a prefix of the value to be compared.
1. &ldquo;`![`&rdquo;: is successful if the search value is not a prefix of the value to be compared.
1. &ldquo;`]`&rdquo;: is successful if the search value is a suffix of the value to be compared.
1. &ldquo;`!]`&rdquo;: is successful if the search value is not a suffix of the value to be compared.
1. &ldquo;`:`&rdquo;: is successful if the search value is has/match one word of the value to be compared.
1. &ldquo;`!:`&rdquo;: is successful if the search value is not match/has to any word of the value to be compared.
1. &ldquo;`<`&rdquo;: is successful if the search value is less than the value to be compared.
1. &ldquo;`!<`&rdquo;: is successful if the search value is not less than, e.g. greater or equal than the value to be compared.
1. &ldquo;`>`&rdquo;: is successful if the search value is greater than the value to be compared.
1. &ldquo;`!>`&rdquo;: is successful if the search value is not greater than, e.g. less or equal than the value to be compared.
1. &ldquo;`?`&rdquo;: is successful if the metadata contains the given key.
1. &ldquo;`!?`&rdquo;: is successful if the metadata does not contain the given key.
1. &ldquo;``&rdquo;: a missing search operator can only occur for a full-text search.
   It is equal to the &ldquo;`~`&rdquo; operator.