logologo
HomeGallery
  • Why?
  • Docs
  • Demo
  • Download
    Start
    Install
    General
    docker-compose
    docker
    Binary
    App Bundle
    Generic Bundle
    Source
    Azure
    Configuration
    CLI
    help
    run
    export meta
    export static
    fetch
    database
    storage
    plugin
    cast
    Webapp
    Search
    FAQ
    API server
    Recipes
    Use Nginx proxy with subpath
    Use Traefik proxy with subpath
    Use IIS Proxy With a Sub-Path
    Internals
    Workflow
    Building Blocks
    Data Structures
    Design Decisions
    Development
    Plugin
    Extractor Plugin
    Database Mapper Plugin
    Query Plugin
    Previous pageWebappNext pageFAQ

    #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