Skip to main content

Full text search - PostgreSQL Platform - Releases

← App details

Nextcloud 34

Full text search - PostgreSQL Platform 0.1.1
Release Details
UpdatedSept. 10, 2026, 1:58 p.m.
Changelog

Fixed

  • Installing unaccent after the first indexing run now rebuilds the index table, so searching without accents starts working. It used to stay broken for good: the generated tsvector column is fixed when the table is created, and neither fulltextsearch:reset nor a full re-index redefined it.
  • occ fulltextsearch:check no longer reports a healthy index when the table was built for a different configuration. It names the mismatch and the two commands that settle it.

Changed

  • The warning about a missing extension now suggests granting CREATE on the database to the role Nextcloud connects with, which lets the app create both extensions on its next indexing run, instead of asking a superuser to create each one.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEFDCCAvwCAhQQMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwOTEwMDkxNjUyWhcNMzYxMjE2MDkxNjUyWjAkMSIwIAYD
VQQDDBlmdWxsdGV4dHNlYXJjaF9wb3N0Z3Jlc3FsMIICIjANBgkqhkiG9w0BAQEF
AAOCAg8AMIICCgKCAgEA2sF3ms/ia9dqm8FCgMFF0ETu8YFPNIrcJzQY0D8vDOty
yuip7tPoPyiusKlhQNJ+dlb6pR38ryS3l5CWtA1NsPLtZoxpeN+9eCQonDGOm/iN
XdcPj9ymNimqi9y/IhYlaoElZ2ITefcnrJsAus3kW7EeDIC3Yvaki4PuFo99ubX2
/EFlNFF8AStn0IhM34IW4NF1xW5Ctg3FGJdoWTr9XFVN3z/diI2czutQxzbPX/Kk
UqCFjeXCaOGMaKjEVRhIhb8EJxIWIFnX6QBS2GaUK8AYdLTPxjGNtDzyU9QFBh69
sqqiygNyxaLY2LN+W/F0n1/dMHkFMD+FTqoQJZuqSi1LCOfIcNevhLwkTboooAbL
x2yIfaAay7zikiv5V7b6n4qKUdRLtqXXtWEBltejUmYBpaE6oN1FsprAMLO1/EmL
q5/VgjJoysG83MHNmjRE9/rqFHpo5PPylJ2MrJKmTZJtoDC5XHOMJpT2n0Vw6cBt
lzZXkWt8jn+nss0HA1SHuTiLOMbhn3KI/GkZyzDNVZm7vaWVbPssJCR3grAxfjpb
10VAqQFqmwEkx1PxmzhNj20eGwnubQHddeMrXm/fXL95CwR9os+g6OURfrkW12nt
1szK9xLEZCBo9CT78LrnHgbF5bvVIWMAnNOR242sOSYWsbux2HbLDgD2qFd/UEkC
AwEAATANBgkqhkiG9w0BAQsFAAOCAQEAhTk9TndxDinGvzUCNVsN/yKFnoTCG97K
IYAqPpxUIhe8Q00PP08TgR8qNzpfiImxJxkhY2sijbUnzuoniWQ+aGZoraqTw2PT
p0s65o7XhJEvCbeh5c4YQ0AznSSkzQl+aSkiepTYKhBX4rLPxfhCV24L5rbsQxzp
W/FLHWr4rXFxktpQV7O82ID7Q9eyf+VGJedr3tumyYJDBGOJ5J8ruMHYQILSvwZx
Bj0gJ1EWx9+gKpbuoa7lJus8vd/8EGVQdCoHnGrU3ElfJw7vHjdP+SvySLY9ktc1
bP81rnQ1j3NiBosUX+ambjkYuSO2ycBjMWVn/3C/TiT7N34EX7PGtg==
-----END CERTIFICATE-----
SignatureEoMfwGUgSSgnSxp7TBcra3bSnl3X1LakOizPabWQwSSQuhUS6KuBRpRz89jYdDXkjKKXGmTllbkblpHEqKxiqFclqggMiLWYz9CMJBcoOKrxqfwNWI5rXynheT6niF8/s8QMAEA7Yw6LCczKNcPSJOcgjfKyf73cZQhtZWoeoAAsXNv6YAjFb04Y52YpKlTYZ8HhHiAyH++OJvMPc6umXs24GcZiFZZ2QMEg2uPhnQYX0exVARwVxFSMnRPJiWW4Y7YClpHF+78UZ+wZYrBrAatRTzGKDghGkvDarw3HOq3W4VROk8CoQI3WFIgjf/+fUjWBrhHbYtksMzDIwdoiSa16S9NIHAF8pknA1ZawqKEKuKANKlFpKtjll9Z3DwO+x8xT4HE9TJ1IZmLh5bnRulEpndc0W2qf9OlaiUJlqv52kPYFNFXGNyR4wF3g9SBn44HsKRxLXDFcY6Kk+w64K0lz9Tqcy2ssnypln9peK/cIMEs4+B2a4ct6gxsuRfguicLhiW16mxovgSGgenDtgiOtQYkU/YcoT0AzrlzZDtZ6UppvUbNI5tdNHvr8q1luzI5QBxKGWc9ipjk1xWOA1j7UpGxmX0lHGYokNA04QXFcdh3YbWIAwRNBE9mDxvPpIVsF8Cypg66YE4uHaT8j9ZPpLY1xxc/Mv3/Jl7IBm2Q=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases PostgreSQL >=15.0.0
Minimum Integer bits32
Full text search - PostgreSQL Platform 0.1.0
Release Details
UpdatedSept. 10, 2026, 11:44 a.m.
Changelog

First release. Tested on Nextcloud 32, 33 and 34, against PostgreSQL 15 and 18.

Added

  • Full-text search for Nextcloud backed by PostgreSQL, with no service to run alongside it.
  • Language-aware indexing: content is indexed with a PostgreSQL text search configuration and with an accent-folding variant derived from it, so a search without accents still matches accented content. The language follows the Nextcloud instance by default, and several can be combined for a mixed corpus.
  • PDF and office content extracted by the app itself — docx, xlsx, pptx, odt, ods, odp and PDF, with no external extraction service to install.
  • Permissions indexed with the content, so a search only ever matches what the person running it can access.
  • Search filters as the Files content provider issues them: by source, by extension, within a folder, and partial matching on file and share names.
  • Query syntax: OR between words with documents carrying every term ranked first, binding quotes for exact phrases, -word to exclude, +word to require, and prefix matching from four characters.
  • An administration panel offering the text search configurations installed on the server.
  • English and French interface translations.

Known limitations

  • Writing systems without spaces are not segmented, so Chinese or Japanese content stays unfindable. No setting changes this.
  • Scanned PDFs are not read, though scanned images are: the upstream OCR app hands over text for jpg and png, but its PDF path is broken and it declares support only up to Nextcloud 32.
  • The indexed content is held twice, once as text so excerpts can be built and once in the generated tsvector, and once more per extra language.
  • In a multilingual corpus, excerpts are cut using the dictionary of the first configured language: the text stays correct, only the choice of fragment may be less apt.
  • Advanced search filters (comparison queries, additional fields) are not implemented, as the Files content provider does not issue them.
  • No facets and no configurable sorting: the framework API does not expose them.
  • Tested up to 50,000 documents; beyond that, uncharted.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEFDCCAvwCAhQQMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwOTEwMDkxNjUyWhcNMzYxMjE2MDkxNjUyWjAkMSIwIAYD
VQQDDBlmdWxsdGV4dHNlYXJjaF9wb3N0Z3Jlc3FsMIICIjANBgkqhkiG9w0BAQEF
AAOCAg8AMIICCgKCAgEA2sF3ms/ia9dqm8FCgMFF0ETu8YFPNIrcJzQY0D8vDOty
yuip7tPoPyiusKlhQNJ+dlb6pR38ryS3l5CWtA1NsPLtZoxpeN+9eCQonDGOm/iN
XdcPj9ymNimqi9y/IhYlaoElZ2ITefcnrJsAus3kW7EeDIC3Yvaki4PuFo99ubX2
/EFlNFF8AStn0IhM34IW4NF1xW5Ctg3FGJdoWTr9XFVN3z/diI2czutQxzbPX/Kk
UqCFjeXCaOGMaKjEVRhIhb8EJxIWIFnX6QBS2GaUK8AYdLTPxjGNtDzyU9QFBh69
sqqiygNyxaLY2LN+W/F0n1/dMHkFMD+FTqoQJZuqSi1LCOfIcNevhLwkTboooAbL
x2yIfaAay7zikiv5V7b6n4qKUdRLtqXXtWEBltejUmYBpaE6oN1FsprAMLO1/EmL
q5/VgjJoysG83MHNmjRE9/rqFHpo5PPylJ2MrJKmTZJtoDC5XHOMJpT2n0Vw6cBt
lzZXkWt8jn+nss0HA1SHuTiLOMbhn3KI/GkZyzDNVZm7vaWVbPssJCR3grAxfjpb
10VAqQFqmwEkx1PxmzhNj20eGwnubQHddeMrXm/fXL95CwR9os+g6OURfrkW12nt
1szK9xLEZCBo9CT78LrnHgbF5bvVIWMAnNOR242sOSYWsbux2HbLDgD2qFd/UEkC
AwEAATANBgkqhkiG9w0BAQsFAAOCAQEAhTk9TndxDinGvzUCNVsN/yKFnoTCG97K
IYAqPpxUIhe8Q00PP08TgR8qNzpfiImxJxkhY2sijbUnzuoniWQ+aGZoraqTw2PT
p0s65o7XhJEvCbeh5c4YQ0AznSSkzQl+aSkiepTYKhBX4rLPxfhCV24L5rbsQxzp
W/FLHWr4rXFxktpQV7O82ID7Q9eyf+VGJedr3tumyYJDBGOJ5J8ruMHYQILSvwZx
Bj0gJ1EWx9+gKpbuoa7lJus8vd/8EGVQdCoHnGrU3ElfJw7vHjdP+SvySLY9ktc1
bP81rnQ1j3NiBosUX+ambjkYuSO2ycBjMWVn/3C/TiT7N34EX7PGtg==
-----END CERTIFICATE-----
SignatureNLqETmFVzg0tINV9YyAHXRm/+I7rI2nI1dOxhtiNsojW57QIIjRo7JDW4W9ooNq5+5Oyeb/L5nZCA8YP95xfmu5b4jsTqbYfwS+fnV/437G77VTa5Lrveua33X2cqUMFEngLaKmZCaNGbNRDNEgIW02P5Zb/GXp1aZCR8BN3NVWtisWmcRJjzHtsmPUTX95mNcEs5n91/24Ofq6tSwLtY15c1plG5m2mqXnH2jguCF2a87m4P7p+IpnW1lgolTWsyOTBsd9fs6++a3Mz4tkJdnWmIwXvmaUNFDaX6VfGxMc2pJoAi/RrKER0pLNoJ+NIlIYwuCibW8WZZ/j/nFQhEjKl9l7izJMvVA3ZyuklvOpLBLbFE5alcTynazCIIGxS1nBoRe3jgW+AbSbv1nOQvYgIlVyHTY3WFeFa7cLWLRusW8GXQ9ppw566KnOdb6tuTUHwLA/cJl+X30dcEGJX+nstsX/dFr3MaghR0BW+ceDR54u9Q/vm5cyFh4eqVBUzMXoCVrWGhuayaL5Z/6VKFxfI0JfbjmyNYUiDzJ2qtaE0Lp2/4zVdcJZOSth4CzagHI6KlwiumFYnma2oeJB+/rNS6j7BHOvKgqMPXFKpLSWUG1KP+hiscLvGACq9OnBz9X1Gq3IFZbQSJRWzzE/GkKEz5mHieufy6VyajpXXbeg=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases PostgreSQL >=15.0.0
Minimum Integer bits32

Nextcloud 33

Full text search - PostgreSQL Platform 0.1.1
Release Details
UpdatedSept. 10, 2026, 1:58 p.m.
Changelog

Fixed

  • Installing unaccent after the first indexing run now rebuilds the index table, so searching without accents starts working. It used to stay broken for good: the generated tsvector column is fixed when the table is created, and neither fulltextsearch:reset nor a full re-index redefined it.
  • occ fulltextsearch:check no longer reports a healthy index when the table was built for a different configuration. It names the mismatch and the two commands that settle it.

Changed

  • The warning about a missing extension now suggests granting CREATE on the database to the role Nextcloud connects with, which lets the app create both extensions on its next indexing run, instead of asking a superuser to create each one.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEFDCCAvwCAhQQMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwOTEwMDkxNjUyWhcNMzYxMjE2MDkxNjUyWjAkMSIwIAYD
VQQDDBlmdWxsdGV4dHNlYXJjaF9wb3N0Z3Jlc3FsMIICIjANBgkqhkiG9w0BAQEF
AAOCAg8AMIICCgKCAgEA2sF3ms/ia9dqm8FCgMFF0ETu8YFPNIrcJzQY0D8vDOty
yuip7tPoPyiusKlhQNJ+dlb6pR38ryS3l5CWtA1NsPLtZoxpeN+9eCQonDGOm/iN
XdcPj9ymNimqi9y/IhYlaoElZ2ITefcnrJsAus3kW7EeDIC3Yvaki4PuFo99ubX2
/EFlNFF8AStn0IhM34IW4NF1xW5Ctg3FGJdoWTr9XFVN3z/diI2czutQxzbPX/Kk
UqCFjeXCaOGMaKjEVRhIhb8EJxIWIFnX6QBS2GaUK8AYdLTPxjGNtDzyU9QFBh69
sqqiygNyxaLY2LN+W/F0n1/dMHkFMD+FTqoQJZuqSi1LCOfIcNevhLwkTboooAbL
x2yIfaAay7zikiv5V7b6n4qKUdRLtqXXtWEBltejUmYBpaE6oN1FsprAMLO1/EmL
q5/VgjJoysG83MHNmjRE9/rqFHpo5PPylJ2MrJKmTZJtoDC5XHOMJpT2n0Vw6cBt
lzZXkWt8jn+nss0HA1SHuTiLOMbhn3KI/GkZyzDNVZm7vaWVbPssJCR3grAxfjpb
10VAqQFqmwEkx1PxmzhNj20eGwnubQHddeMrXm/fXL95CwR9os+g6OURfrkW12nt
1szK9xLEZCBo9CT78LrnHgbF5bvVIWMAnNOR242sOSYWsbux2HbLDgD2qFd/UEkC
AwEAATANBgkqhkiG9w0BAQsFAAOCAQEAhTk9TndxDinGvzUCNVsN/yKFnoTCG97K
IYAqPpxUIhe8Q00PP08TgR8qNzpfiImxJxkhY2sijbUnzuoniWQ+aGZoraqTw2PT
p0s65o7XhJEvCbeh5c4YQ0AznSSkzQl+aSkiepTYKhBX4rLPxfhCV24L5rbsQxzp
W/FLHWr4rXFxktpQV7O82ID7Q9eyf+VGJedr3tumyYJDBGOJ5J8ruMHYQILSvwZx
Bj0gJ1EWx9+gKpbuoa7lJus8vd/8EGVQdCoHnGrU3ElfJw7vHjdP+SvySLY9ktc1
bP81rnQ1j3NiBosUX+ambjkYuSO2ycBjMWVn/3C/TiT7N34EX7PGtg==
-----END CERTIFICATE-----
SignatureEoMfwGUgSSgnSxp7TBcra3bSnl3X1LakOizPabWQwSSQuhUS6KuBRpRz89jYdDXkjKKXGmTllbkblpHEqKxiqFclqggMiLWYz9CMJBcoOKrxqfwNWI5rXynheT6niF8/s8QMAEA7Yw6LCczKNcPSJOcgjfKyf73cZQhtZWoeoAAsXNv6YAjFb04Y52YpKlTYZ8HhHiAyH++OJvMPc6umXs24GcZiFZZ2QMEg2uPhnQYX0exVARwVxFSMnRPJiWW4Y7YClpHF+78UZ+wZYrBrAatRTzGKDghGkvDarw3HOq3W4VROk8CoQI3WFIgjf/+fUjWBrhHbYtksMzDIwdoiSa16S9NIHAF8pknA1ZawqKEKuKANKlFpKtjll9Z3DwO+x8xT4HE9TJ1IZmLh5bnRulEpndc0W2qf9OlaiUJlqv52kPYFNFXGNyR4wF3g9SBn44HsKRxLXDFcY6Kk+w64K0lz9Tqcy2ssnypln9peK/cIMEs4+B2a4ct6gxsuRfguicLhiW16mxovgSGgenDtgiOtQYkU/YcoT0AzrlzZDtZ6UppvUbNI5tdNHvr8q1luzI5QBxKGWc9ipjk1xWOA1j7UpGxmX0lHGYokNA04QXFcdh3YbWIAwRNBE9mDxvPpIVsF8Cypg66YE4uHaT8j9ZPpLY1xxc/Mv3/Jl7IBm2Q=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases PostgreSQL >=15.0.0
Minimum Integer bits32
Full text search - PostgreSQL Platform 0.1.0
Release Details
UpdatedSept. 10, 2026, 11:44 a.m.
Changelog

First release. Tested on Nextcloud 32, 33 and 34, against PostgreSQL 15 and 18.

Added

  • Full-text search for Nextcloud backed by PostgreSQL, with no service to run alongside it.
  • Language-aware indexing: content is indexed with a PostgreSQL text search configuration and with an accent-folding variant derived from it, so a search without accents still matches accented content. The language follows the Nextcloud instance by default, and several can be combined for a mixed corpus.
  • PDF and office content extracted by the app itself — docx, xlsx, pptx, odt, ods, odp and PDF, with no external extraction service to install.
  • Permissions indexed with the content, so a search only ever matches what the person running it can access.
  • Search filters as the Files content provider issues them: by source, by extension, within a folder, and partial matching on file and share names.
  • Query syntax: OR between words with documents carrying every term ranked first, binding quotes for exact phrases, -word to exclude, +word to require, and prefix matching from four characters.
  • An administration panel offering the text search configurations installed on the server.
  • English and French interface translations.

Known limitations

  • Writing systems without spaces are not segmented, so Chinese or Japanese content stays unfindable. No setting changes this.
  • Scanned PDFs are not read, though scanned images are: the upstream OCR app hands over text for jpg and png, but its PDF path is broken and it declares support only up to Nextcloud 32.
  • The indexed content is held twice, once as text so excerpts can be built and once in the generated tsvector, and once more per extra language.
  • In a multilingual corpus, excerpts are cut using the dictionary of the first configured language: the text stays correct, only the choice of fragment may be less apt.
  • Advanced search filters (comparison queries, additional fields) are not implemented, as the Files content provider does not issue them.
  • No facets and no configurable sorting: the framework API does not expose them.
  • Tested up to 50,000 documents; beyond that, uncharted.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEFDCCAvwCAhQQMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwOTEwMDkxNjUyWhcNMzYxMjE2MDkxNjUyWjAkMSIwIAYD
VQQDDBlmdWxsdGV4dHNlYXJjaF9wb3N0Z3Jlc3FsMIICIjANBgkqhkiG9w0BAQEF
AAOCAg8AMIICCgKCAgEA2sF3ms/ia9dqm8FCgMFF0ETu8YFPNIrcJzQY0D8vDOty
yuip7tPoPyiusKlhQNJ+dlb6pR38ryS3l5CWtA1NsPLtZoxpeN+9eCQonDGOm/iN
XdcPj9ymNimqi9y/IhYlaoElZ2ITefcnrJsAus3kW7EeDIC3Yvaki4PuFo99ubX2
/EFlNFF8AStn0IhM34IW4NF1xW5Ctg3FGJdoWTr9XFVN3z/diI2czutQxzbPX/Kk
UqCFjeXCaOGMaKjEVRhIhb8EJxIWIFnX6QBS2GaUK8AYdLTPxjGNtDzyU9QFBh69
sqqiygNyxaLY2LN+W/F0n1/dMHkFMD+FTqoQJZuqSi1LCOfIcNevhLwkTboooAbL
x2yIfaAay7zikiv5V7b6n4qKUdRLtqXXtWEBltejUmYBpaE6oN1FsprAMLO1/EmL
q5/VgjJoysG83MHNmjRE9/rqFHpo5PPylJ2MrJKmTZJtoDC5XHOMJpT2n0Vw6cBt
lzZXkWt8jn+nss0HA1SHuTiLOMbhn3KI/GkZyzDNVZm7vaWVbPssJCR3grAxfjpb
10VAqQFqmwEkx1PxmzhNj20eGwnubQHddeMrXm/fXL95CwR9os+g6OURfrkW12nt
1szK9xLEZCBo9CT78LrnHgbF5bvVIWMAnNOR242sOSYWsbux2HbLDgD2qFd/UEkC
AwEAATANBgkqhkiG9w0BAQsFAAOCAQEAhTk9TndxDinGvzUCNVsN/yKFnoTCG97K
IYAqPpxUIhe8Q00PP08TgR8qNzpfiImxJxkhY2sijbUnzuoniWQ+aGZoraqTw2PT
p0s65o7XhJEvCbeh5c4YQ0AznSSkzQl+aSkiepTYKhBX4rLPxfhCV24L5rbsQxzp
W/FLHWr4rXFxktpQV7O82ID7Q9eyf+VGJedr3tumyYJDBGOJ5J8ruMHYQILSvwZx
Bj0gJ1EWx9+gKpbuoa7lJus8vd/8EGVQdCoHnGrU3ElfJw7vHjdP+SvySLY9ktc1
bP81rnQ1j3NiBosUX+ambjkYuSO2ycBjMWVn/3C/TiT7N34EX7PGtg==
-----END CERTIFICATE-----
SignatureNLqETmFVzg0tINV9YyAHXRm/+I7rI2nI1dOxhtiNsojW57QIIjRo7JDW4W9ooNq5+5Oyeb/L5nZCA8YP95xfmu5b4jsTqbYfwS+fnV/437G77VTa5Lrveua33X2cqUMFEngLaKmZCaNGbNRDNEgIW02P5Zb/GXp1aZCR8BN3NVWtisWmcRJjzHtsmPUTX95mNcEs5n91/24Ofq6tSwLtY15c1plG5m2mqXnH2jguCF2a87m4P7p+IpnW1lgolTWsyOTBsd9fs6++a3Mz4tkJdnWmIwXvmaUNFDaX6VfGxMc2pJoAi/RrKER0pLNoJ+NIlIYwuCibW8WZZ/j/nFQhEjKl9l7izJMvVA3ZyuklvOpLBLbFE5alcTynazCIIGxS1nBoRe3jgW+AbSbv1nOQvYgIlVyHTY3WFeFa7cLWLRusW8GXQ9ppw566KnOdb6tuTUHwLA/cJl+X30dcEGJX+nstsX/dFr3MaghR0BW+ceDR54u9Q/vm5cyFh4eqVBUzMXoCVrWGhuayaL5Z/6VKFxfI0JfbjmyNYUiDzJ2qtaE0Lp2/4zVdcJZOSth4CzagHI6KlwiumFYnma2oeJB+/rNS6j7BHOvKgqMPXFKpLSWUG1KP+hiscLvGACq9OnBz9X1Gq3IFZbQSJRWzzE/GkKEz5mHieufy6VyajpXXbeg=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases PostgreSQL >=15.0.0
Minimum Integer bits32

Nextcloud 32

Full text search - PostgreSQL Platform 0.1.1
Release Details
UpdatedSept. 10, 2026, 1:58 p.m.
Changelog

Fixed

  • Installing unaccent after the first indexing run now rebuilds the index table, so searching without accents starts working. It used to stay broken for good: the generated tsvector column is fixed when the table is created, and neither fulltextsearch:reset nor a full re-index redefined it.
  • occ fulltextsearch:check no longer reports a healthy index when the table was built for a different configuration. It names the mismatch and the two commands that settle it.

Changed

  • The warning about a missing extension now suggests granting CREATE on the database to the role Nextcloud connects with, which lets the app create both extensions on its next indexing run, instead of asking a superuser to create each one.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEFDCCAvwCAhQQMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwOTEwMDkxNjUyWhcNMzYxMjE2MDkxNjUyWjAkMSIwIAYD
VQQDDBlmdWxsdGV4dHNlYXJjaF9wb3N0Z3Jlc3FsMIICIjANBgkqhkiG9w0BAQEF
AAOCAg8AMIICCgKCAgEA2sF3ms/ia9dqm8FCgMFF0ETu8YFPNIrcJzQY0D8vDOty
yuip7tPoPyiusKlhQNJ+dlb6pR38ryS3l5CWtA1NsPLtZoxpeN+9eCQonDGOm/iN
XdcPj9ymNimqi9y/IhYlaoElZ2ITefcnrJsAus3kW7EeDIC3Yvaki4PuFo99ubX2
/EFlNFF8AStn0IhM34IW4NF1xW5Ctg3FGJdoWTr9XFVN3z/diI2czutQxzbPX/Kk
UqCFjeXCaOGMaKjEVRhIhb8EJxIWIFnX6QBS2GaUK8AYdLTPxjGNtDzyU9QFBh69
sqqiygNyxaLY2LN+W/F0n1/dMHkFMD+FTqoQJZuqSi1LCOfIcNevhLwkTboooAbL
x2yIfaAay7zikiv5V7b6n4qKUdRLtqXXtWEBltejUmYBpaE6oN1FsprAMLO1/EmL
q5/VgjJoysG83MHNmjRE9/rqFHpo5PPylJ2MrJKmTZJtoDC5XHOMJpT2n0Vw6cBt
lzZXkWt8jn+nss0HA1SHuTiLOMbhn3KI/GkZyzDNVZm7vaWVbPssJCR3grAxfjpb
10VAqQFqmwEkx1PxmzhNj20eGwnubQHddeMrXm/fXL95CwR9os+g6OURfrkW12nt
1szK9xLEZCBo9CT78LrnHgbF5bvVIWMAnNOR242sOSYWsbux2HbLDgD2qFd/UEkC
AwEAATANBgkqhkiG9w0BAQsFAAOCAQEAhTk9TndxDinGvzUCNVsN/yKFnoTCG97K
IYAqPpxUIhe8Q00PP08TgR8qNzpfiImxJxkhY2sijbUnzuoniWQ+aGZoraqTw2PT
p0s65o7XhJEvCbeh5c4YQ0AznSSkzQl+aSkiepTYKhBX4rLPxfhCV24L5rbsQxzp
W/FLHWr4rXFxktpQV7O82ID7Q9eyf+VGJedr3tumyYJDBGOJ5J8ruMHYQILSvwZx
Bj0gJ1EWx9+gKpbuoa7lJus8vd/8EGVQdCoHnGrU3ElfJw7vHjdP+SvySLY9ktc1
bP81rnQ1j3NiBosUX+ambjkYuSO2ycBjMWVn/3C/TiT7N34EX7PGtg==
-----END CERTIFICATE-----
SignatureEoMfwGUgSSgnSxp7TBcra3bSnl3X1LakOizPabWQwSSQuhUS6KuBRpRz89jYdDXkjKKXGmTllbkblpHEqKxiqFclqggMiLWYz9CMJBcoOKrxqfwNWI5rXynheT6niF8/s8QMAEA7Yw6LCczKNcPSJOcgjfKyf73cZQhtZWoeoAAsXNv6YAjFb04Y52YpKlTYZ8HhHiAyH++OJvMPc6umXs24GcZiFZZ2QMEg2uPhnQYX0exVARwVxFSMnRPJiWW4Y7YClpHF+78UZ+wZYrBrAatRTzGKDghGkvDarw3HOq3W4VROk8CoQI3WFIgjf/+fUjWBrhHbYtksMzDIwdoiSa16S9NIHAF8pknA1ZawqKEKuKANKlFpKtjll9Z3DwO+x8xT4HE9TJ1IZmLh5bnRulEpndc0W2qf9OlaiUJlqv52kPYFNFXGNyR4wF3g9SBn44HsKRxLXDFcY6Kk+w64K0lz9Tqcy2ssnypln9peK/cIMEs4+B2a4ct6gxsuRfguicLhiW16mxovgSGgenDtgiOtQYkU/YcoT0AzrlzZDtZ6UppvUbNI5tdNHvr8q1luzI5QBxKGWc9ipjk1xWOA1j7UpGxmX0lHGYokNA04QXFcdh3YbWIAwRNBE9mDxvPpIVsF8Cypg66YE4uHaT8j9ZPpLY1xxc/Mv3/Jl7IBm2Q=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases PostgreSQL >=15.0.0
Minimum Integer bits32
Full text search - PostgreSQL Platform 0.1.0
Release Details
UpdatedSept. 10, 2026, 11:44 a.m.
Changelog

First release. Tested on Nextcloud 32, 33 and 34, against PostgreSQL 15 and 18.

Added

  • Full-text search for Nextcloud backed by PostgreSQL, with no service to run alongside it.
  • Language-aware indexing: content is indexed with a PostgreSQL text search configuration and with an accent-folding variant derived from it, so a search without accents still matches accented content. The language follows the Nextcloud instance by default, and several can be combined for a mixed corpus.
  • PDF and office content extracted by the app itself — docx, xlsx, pptx, odt, ods, odp and PDF, with no external extraction service to install.
  • Permissions indexed with the content, so a search only ever matches what the person running it can access.
  • Search filters as the Files content provider issues them: by source, by extension, within a folder, and partial matching on file and share names.
  • Query syntax: OR between words with documents carrying every term ranked first, binding quotes for exact phrases, -word to exclude, +word to require, and prefix matching from four characters.
  • An administration panel offering the text search configurations installed on the server.
  • English and French interface translations.

Known limitations

  • Writing systems without spaces are not segmented, so Chinese or Japanese content stays unfindable. No setting changes this.
  • Scanned PDFs are not read, though scanned images are: the upstream OCR app hands over text for jpg and png, but its PDF path is broken and it declares support only up to Nextcloud 32.
  • The indexed content is held twice, once as text so excerpts can be built and once in the generated tsvector, and once more per extra language.
  • In a multilingual corpus, excerpts are cut using the dictionary of the first configured language: the text stays correct, only the choice of fragment may be less apt.
  • Advanced search filters (comparison queries, additional fields) are not implemented, as the Files content provider does not issue them.
  • No facets and no configurable sorting: the framework API does not expose them.
  • Tested up to 50,000 documents; beyond that, uncharted.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEFDCCAvwCAhQQMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwOTEwMDkxNjUyWhcNMzYxMjE2MDkxNjUyWjAkMSIwIAYD
VQQDDBlmdWxsdGV4dHNlYXJjaF9wb3N0Z3Jlc3FsMIICIjANBgkqhkiG9w0BAQEF
AAOCAg8AMIICCgKCAgEA2sF3ms/ia9dqm8FCgMFF0ETu8YFPNIrcJzQY0D8vDOty
yuip7tPoPyiusKlhQNJ+dlb6pR38ryS3l5CWtA1NsPLtZoxpeN+9eCQonDGOm/iN
XdcPj9ymNimqi9y/IhYlaoElZ2ITefcnrJsAus3kW7EeDIC3Yvaki4PuFo99ubX2
/EFlNFF8AStn0IhM34IW4NF1xW5Ctg3FGJdoWTr9XFVN3z/diI2czutQxzbPX/Kk
UqCFjeXCaOGMaKjEVRhIhb8EJxIWIFnX6QBS2GaUK8AYdLTPxjGNtDzyU9QFBh69
sqqiygNyxaLY2LN+W/F0n1/dMHkFMD+FTqoQJZuqSi1LCOfIcNevhLwkTboooAbL
x2yIfaAay7zikiv5V7b6n4qKUdRLtqXXtWEBltejUmYBpaE6oN1FsprAMLO1/EmL
q5/VgjJoysG83MHNmjRE9/rqFHpo5PPylJ2MrJKmTZJtoDC5XHOMJpT2n0Vw6cBt
lzZXkWt8jn+nss0HA1SHuTiLOMbhn3KI/GkZyzDNVZm7vaWVbPssJCR3grAxfjpb
10VAqQFqmwEkx1PxmzhNj20eGwnubQHddeMrXm/fXL95CwR9os+g6OURfrkW12nt
1szK9xLEZCBo9CT78LrnHgbF5bvVIWMAnNOR242sOSYWsbux2HbLDgD2qFd/UEkC
AwEAATANBgkqhkiG9w0BAQsFAAOCAQEAhTk9TndxDinGvzUCNVsN/yKFnoTCG97K
IYAqPpxUIhe8Q00PP08TgR8qNzpfiImxJxkhY2sijbUnzuoniWQ+aGZoraqTw2PT
p0s65o7XhJEvCbeh5c4YQ0AznSSkzQl+aSkiepTYKhBX4rLPxfhCV24L5rbsQxzp
W/FLHWr4rXFxktpQV7O82ID7Q9eyf+VGJedr3tumyYJDBGOJ5J8ruMHYQILSvwZx
Bj0gJ1EWx9+gKpbuoa7lJus8vd/8EGVQdCoHnGrU3ElfJw7vHjdP+SvySLY9ktc1
bP81rnQ1j3NiBosUX+ambjkYuSO2ycBjMWVn/3C/TiT7N34EX7PGtg==
-----END CERTIFICATE-----
SignatureNLqETmFVzg0tINV9YyAHXRm/+I7rI2nI1dOxhtiNsojW57QIIjRo7JDW4W9ooNq5+5Oyeb/L5nZCA8YP95xfmu5b4jsTqbYfwS+fnV/437G77VTa5Lrveua33X2cqUMFEngLaKmZCaNGbNRDNEgIW02P5Zb/GXp1aZCR8BN3NVWtisWmcRJjzHtsmPUTX95mNcEs5n91/24Ofq6tSwLtY15c1plG5m2mqXnH2jguCF2a87m4P7p+IpnW1lgolTWsyOTBsd9fs6++a3Mz4tkJdnWmIwXvmaUNFDaX6VfGxMc2pJoAi/RrKER0pLNoJ+NIlIYwuCibW8WZZ/j/nFQhEjKl9l7izJMvVA3ZyuklvOpLBLbFE5alcTynazCIIGxS1nBoRe3jgW+AbSbv1nOQvYgIlVyHTY3WFeFa7cLWLRusW8GXQ9ppw566KnOdb6tuTUHwLA/cJl+X30dcEGJX+nstsX/dFr3MaghR0BW+ceDR54u9Q/vm5cyFh4eqVBUzMXoCVrWGhuayaL5Z/6VKFxfI0JfbjmyNYUiDzJ2qtaE0Lp2/4zVdcJZOSth4CzagHI6KlwiumFYnma2oeJB+/rNS6j7BHOvKgqMPXFKpLSWUG1KP+hiscLvGACq9OnBz9X1Gq3IFZbQSJRWzzE/GkKEz5mHieufy6VyajpXXbeg=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases PostgreSQL >=15.0.0
Minimum Integer bits32