Search

The media list can be filtered and ordered by the search input on the nav bar in list mode. A search term is tested by default agains a space separated basic text of id prefix, media type, filename, date, camara vendor, camara model, geo names, tags and objects. The search test is case insensitive.

By default each space separated word is a search term and all search term must be a part of the basic text. A search term with a white space must be escaped by single or double quotations. So the input of san francisco is treaded as san and francisco while "san francisco" is treaded as complete name with whitespace.

Search terms can be combined with boolean operands of not, and, or and parenthesis. Search terms of not, and and or must be escaped by quotations. Advance search terms like explicit tag search or aspect ratio comparison are listed below.

Date format is currenty in ISO 8601 format: YYYY-DD-MM'T'hh:mm:ss like 2020-09-23T08:24:54

Search Examples

berlin

Search for filename, address or tag containing search term berlin

berlin tower

Is the same as berlin and tower. Search for filename, address or tag containing search term berlin and term tower

city:berlin or tower

Search for images in the city berlin or having tower in filename, address or tag

city:berlin not tower

Search for images in the city berlin and not haveing tower in filename, address or tag

tags in (vacation, family)

Search for all images with tags vacation or family

tags all in (vacation, family)

Search for all images with tags vacation and family

type:video year in [2015:2020] order by duration

Is the same as type:video and year in [2015:2020]. Search all media type of video within the years between 2015 and 2020 with longest video first.

ratio:landscape

Lists all media in landscape orientation

not exists(geo)

Lists all images whithout geo information via latitude or longitude

order by count(faces)

Lists all images with detected faces, most faces first

Query BNF

The query language follows following backus naur form.

? is optional. | is an alternative

Query
  : Terms OrderBy? | OrderBy
Terms
  : Term Terms?
Term
  : Term `or` Term | Term `and` Term | `not` Term | `(` Terms `)` |
    Expression
Expression
  : KeyValueExpression | CmpExpression | CountFnExpression |
    ExistsFnExpression | ListExpression | RangeExpression | Value
KeyValueExpression
  : Identifier `:` Value
CmpExpression
  : Identifier Operand Value
CountFnExpression
  : `count(` Identifier `)` Operand Value
ExistsFnExpression
  : `exists(` Identifier `)`
ListExpression
  : Identifier `in (` Values `)` | Identifier `all in (` Values `)`
RangeExpression
  : Identifier `in [` Value `:` Value `]`
Operand
  : `=` | `<` | `<=` | `>` | `>=` | `!=` | `~`
Values
  : Value Values?
Value
  : "double quoted value" | 'single quoted value' | *text or number*
Identifier
  : text
OrderBy
  : `order by` OrderExpression OrderDirection?
OrderExpression
  : see order expressions below below
OrderDirection
  : 'asc' | 'desc'

Operands

Following operands are used for comparison

OperandsDescriptions
:Key value, in most cases it is an alias for =
=Equal to case sensitive in some cases
<Smaller to for numeric values
<=Smaller or equal to for numeric values
>=Greater or equal to for numeric values
>Greater to for numeric values
!=not equal
~contains case insensitive
count(key)Counts elements of a list
exists(key)Check if elements exists
  • Number operands: :, =, <, <=, >, >=, !=, in [from:to]
  • Text operands: :, =, !=, ~
  • List operands: in (value, ...), all in (value, ...)

Advance Search Terms

Term (alias)OperandsValue typeExamples
idtext operandstextid~a52f8e
type:, =, !=texttype:image, type != video, type=rawImage
indextext operandstextindex:Pictures
filetext operandstextfile~101Canon/IMG_1234
filenametext operandstextfilename~IMG_1234
pathtext operandstextpath~101Canon
exttext operandstextext:xmp
filesizenumber operandsnumber/textfilesize >= 1024, filesize > 2MB
widthnumber operandsnumberwidth >= 1980
heightnumber operandsnumberheight < 3000
rationumber operandsnumberratio > 2
ratio: =textratio:panorama, ratio:landscape, ratio:square, ratio:portrait
durationnumber operandsnumberduration > 60, duration in [120:360]
year (y)number operandsnumberyear:2000, y >= 2020, y in [2010 : 2020]
month (m)number operandsnumbermonth != 12, m in [1 : 6]
day (d)number operandsnumberday = 3, d in [4 : 10]
hour (H)number operandsnumberhour > 6, H in [9 : 17]
minute (M)number operandsnumberminute = 4, M in [0 : 30]
maketext operandstextmake:canon, make ~ niko
modeltext operandstextmodel:m50, model ~ A22
locationtext operandstextlocation:germany, location ~ thai
countrytext operandstextlocation:germany, location ~ thai
statetext operandstextstate != florida, state ~ fornia
citytext operandstextcity = rome, city ~ stock
road (street)text operandstextroad:main, street ~ way
longitude (lon)number operandsnumberlon > 0
latitude (lat)number operandsnumberlatitude < -20
tagtext operandstexttag:vacation, tag != 'san francisco'
tagslist operandslisttag in (vacation, winter)
objecttext operandstextobject:couch
exists(make)exists(make)
exists(model)exists(model)
exists(location)exists(location)
exists(country)exists(country)
exists(state)exists(state)
exists(city)exists(city)
exists(road) (exists(street))exists(road)
exists(geo)exists(geo)
exists(tags)exists(tags)
exists(objects)exists(objects)
exists(faces)exists(faces)
count(files)number operandsnumbercount(files) = 1
count(tags)number operandsnumbercount(tags) > 1
count(objects)number operandsnumbercount(objects) = 0
count(faces)number operandsnumbercount(faces) = 0

Order Expressions

The search result can be ordered by following expressions

ExpressionExample
dateDefault order by date desc, newest first
updatedOrder by file updates
randomOrder randomly
durationOrder by video duration
widthOrder by image width
heightOrder by image heigt
filesizeOrder by the largest file
count(files)Number of files
count(tags)Order by detected faces
count(faces)Order by detected faces
count(objects)Order by detected objects

: Order expressions