NefixEstrada/fts_sql

A full text search platform for the fulltextsearch framework that indexes into the database the Nextcloud instance already runs — PostgreSQL, MySQL/MariaDB or SQLite — so nobody has to operate Elasticsearch to get full text search

★ 0Forks 0PHPGitHub ↗Compare

README

FTS SQL

REUSE status tests

A full text search platform for the fulltextsearch framework that indexes into the database the Nextcloud instance already runs — PostgreSQL, MySQL/MariaDB or SQLite — so nobody has to operate Elasticsearch to get full text search.

Screenshots

Content search in the unified search — the extracted text is what matches, not just file names (the demo account's seven museu documents):

Search results for museu

The admin card, in the framework's own Full text search settings section:

Admin settings card

Supported formats

Format What is indexed
Plain text — .txt, .md, .csv, .log and every extension nobody declared otherwise the content as-is
Documents — OOXML, ODF, PDF and legacy Office (.docx, .xlsx, .pptx, .odt, .ods, .odp, .pdf, .doc, .xls, .ppt) the body text
Everything else — .epub, archives, executables, images, audio and video title, access and tags only

Requirements

  • Nextcloud 34 or 35 with PHP 8.2 — the floors the integration matrix measures; the manifest pins the majors the app has been tested on.
  • One of PostgreSQL 14+, MySQL/MariaDB, or SQLite built with the FTS5 extension (the standard distributions' builds carry it; the app probes and says so when it is missing).
  • The fulltextsearch framework app and its files_fulltextsearch files provider.

Installation

  1. Install fulltextsearch, files_fulltextsearch and FTS SQL (app id fts_sql) from the Nextcloud app store, or with occ:

    $ occ app:install fulltextsearch
    $ occ app:install files_fulltextsearch
    $ occ app:install fts_sql

    Enabling FTS SQL runs its migrations and creates the per-engine search artefacts.

  2. Select FTS SQL as the search platform — on the admin card above (Administration → Full text search), or:

    $ occ config:app:set fulltextsearch search_platform \
        --value 'OCA\FtsSql\Platform\SqlPlatform'
  3. Fill the index and try it:

    $ occ fulltextsearch:index -r
    $ occ fulltextsearch:test   # the framework's own smoke test

After changing the language setting or a failed run, the remedy is always occ fulltextsearch:reset (it asks for confirmation) followed by another index run.

Removing the app leaves its data — including a plaintext copy of every indexed document — in place; docs/admin.md covers the clean removal and what an upgrade of the Nextcloud server touches.

Documentation

Support

Maintainers

Made with AI

The design, code, tests and documentation in this repository were written with an AI coding agent, directed and reviewed by the maintainer.

Development

Work happens inside the Nix flake against a nextcloud-docker-dev instance: docs/development.md sets it up, docs/testing.md runs every suite, and docs/ci.md explains what CI checks. Contributions are welcome — commit subjects read type: sentence, and measurements beat adjectives.

License

AGPL-3.0-or-later — see LICENSES/.

Contributors

NefixEstrada

Issues