---
title: 'Advanced | Full-Text Search'
---

## Overview

Full-text search allows all messages to be indexed, so that mail clients can quickly and efficiently search messages by their full text content.

The [dovecot-solr Plugin](https://wiki2.dovecot.org/Plugins/FTS/Solr) is used in conjunction with [Apache Solr](https://lucene.apache.org/solr/) running in a separate container. This is quite straightforward to setup using the following instructions.

## Setup Steps

1. `docker-compose.yml`:

    ```yaml
      solr:
        image: lmmdock/dovecot-solr:latest
        volumes:
          - solr-dovecot:/opt/solr/server/solr/dovecot
        restart: always

      mailserver:
        depends_on:
          - solr
        image: mailserver/docker-mailserver:latest
        ...
        volumes:
          ...
          - ./etc/dovecot/conf.d/10-plugin.conf:/etc/dovecot/conf.d/10-plugin.conf:ro
        ...

    volumes:
      solr-dovecot:
        driver: local
    ```

2. `etc/dovecot/conf.d/10-plugin.conf`:

    ```conf
    mail_plugins = $mail_plugins fts fts_solr

    plugin {
      fts = solr
      fts_autoindex = yes
      fts_solr = url=http://solr:8983/solr/dovecot/ 
    }
    ```

3. Recreate containers: `docker-compose down ; docker-compose up -d`
4. Flag all user mailbox FTS indexes as invalid, so they are rescanned on demand when they are next searched: `docker-compose exec mailserver doveadm fts rescan -A`

## Further Discussion

See [#905][github-issue-905]

[github-issue-905]: https://github.com/docker-mailserver/docker-mailserver/issues/905