La recherche plein texte Nextcloud peut-elle retrouver une référence cachée dans un PDF ou une phrase au milieu d'un document en 2026 ? Oui, mais pas avec l'application Files seule. Il faut assembler un fournisseur de contenu, le cadre Full Text Search et une plateforme d'indexation externe.
Ce tutoriel explique cette architecture, la préparation d'Elasticsearch, le premier index et les tests à effectuer. Il traite aussi les PDF scannés, les droits et les pannes courantes. Pour replacer la recherche parmi le stockage, le partage et les autres applications, commencez par le guide complet de Nextcloud.
Comment fonctionne la recherche plein texte Nextcloud ?
Le projet officiel sépare la chaîne en trois rôles. L'application fulltextsearch orchestre les fournisseurs et la plateforme de recherche. files_fulltextsearch parcourt les fichiers des utilisateurs et fournit leur contenu. Une application de plateforme, comme fulltextsearch_elasticsearch, transmet les documents au moteur d'indexation et exécute les requêtes.
Elasticsearch n'ouvre donc pas seul le répertoire de données Nextcloud. Le fournisseur prépare un document d'index avec son identifiant, son propriétaire, ses droits, son titre et le contenu extrait. Le cœur l'envoie ensuite à la plateforme sélectionnée. Lors d'une recherche, la plateforme renvoie les résultats que l'interface Nextcloud peut présenter à l'utilisateur.
| Composant | Rôle | Vérification indispensable |
|---|---|---|
fulltextsearch | Coordonne l'indexation et la recherche | Version compatible avec Nextcloud |
files_fulltextsearch | Extrait les fichiers et leurs informations | Formats et chemins du corpus test |
fulltextsearch_elasticsearch | Relie Nextcloud à Elasticsearch | Client compatible avec le serveur |
| Elasticsearch | Stocke et interroge l'index | Accès réseau, espace et sécurité |
| Tâche d'indexation | Ajoute et actualise les documents | Exécution initiale et suivi des erreurs |
Cette séparation explique pourquoi l'installation d'une seule application ne suffit pas. Elle permet aussi d'identifier une panne : le fournisseur peut échouer à lire le document, le cœur peut bloquer sur une configuration, ou le moteur peut refuser l'indexation.
Un index n'est pas une seconde GED
L'index accélère la recherche, mais les fichiers originaux, les partages et les versions restent dans Nextcloud. Pour organiser le cycle de vie documentaire, consultez le guide Nextcloud comme GED.
Quels prérequis vérifier avant l'installation ?
Relevez d'abord la version exacte de Nextcloud. Dans l'App Store, contrôlez qu'une version stable des trois applications existe pour cette branche. Ne forcez pas une archive prévue pour une autre version. Vérifiez ensuite la dépendance du connecteur Elasticsearch et la version de serveur prise en charge par la version réellement installée.
Elasticsearch doit fonctionner comme un service distinct, avec de la mémoire, du stockage et une surveillance adaptés au corpus. Ne publiez pas son port directement sur Internet. Limitez le réseau aux hôtes nécessaires, activez l'authentification et protégez les communications selon votre mode de déploiement. L'index peut contenir du texte extrait de documents internes, il doit recevoir une protection comparable à la source.
Préparez ensuite un corpus pilote, par exemple un dossier appartenant à un compte de test. Il doit contenir un fichier texte, un document bureautique, un PDF avec couche de texte, un PDF scanné, un fichier volumineux et un document refusé à un second utilisateur. Notez une expression unique présente dans chacun, puis définissez le résultat attendu.
Avant d'ajouter les applications, effectuez une sauvegarde cohérente de Nextcloud. Le guide de sauvegarde Nextcloud couvre les fichiers, la base, la configuration et les applications. Une copie de l'index ne remplace pas ces éléments : l'objectif doit rester de pouvoir reconstruire la recherche à partir des données restaurées.
Comment installer et lancer le premier index ?
Sur une instance autogérée, les applications peuvent être installées depuis l'interface Applications ou avec occ. La commande occ doit être exécutée avec l'utilisateur du serveur web et depuis le répertoire Nextcloud. Adaptez donc www-data, le chemin vers PHP et le répertoire d'installation à votre système.
sudo -u www-data php occ app:install fulltextsearch
sudo -u www-data php occ app:install files_fulltextsearch
sudo -u www-data php occ app:install fulltextsearch_elasticsearch
Installez et sécurisez Elasticsearch séparément en suivant la documentation de sa version. Dans Paramètres d'administration, ouvrez ensuite la section Full text search. Sélectionnez la plateforme Elasticsearch, renseignez son URL, l'index prévu et les identifiants requis par votre configuration. N'inscrivez pas un secret dans un tutoriel partagé ou dans l'historique d'un terminal.
Lancez d'abord le test fourni par le projet. Il crée des documents factices, les indexe, cherche des mots et compare les résultats ainsi que les droits attendus.
sudo -u www-data php occ fulltextsearch:test
Un test réussi valide la communication générale, pas tous vos formats. Commencez ensuite par le compte et le chemin du corpus pilote. La documentation accepte des options JSON pour limiter l'utilisateur, le fournisseur et le chemin.
sudo -u www-data php occ fulltextsearch:index \
'{"user":"utilisateur-test","provider":"files","path":"Documents/Corpus-Recherche"}'

Après ce passage réduit, exécutez trois recherches depuis l'interface : un mot du nom de fichier, une expression du contenu et une expression située dans un document non autorisé. Le dernier ne doit pas apparaître pour le compte privé d'accès. Consignez le compte, la requête, le résultat et l'heure du test.
Quels PDF et documents seront réellement indexés ?
Un PDF peut contenir du texte sélectionnable ou seulement une image de page. Dans le premier cas, le processeur de pièces jointes d'Elasticsearch s'appuie sur Apache Tika pour extraire des formats courants comme PDF, PPT et XLS. Dans le second, il n'existe aucun texte à indexer tant qu'une reconnaissance optique de caractères, ou OCR, n'a pas produit une couche exploitable.
Ne promettez donc jamais « tous les PDF » sans test. Numérisez une page avec le scanner réellement utilisé, indexez-la, puis cherchez une référence visible. Si elle reste absente, placez l'OCR avant l'indexation ou conservez une procédure qui transforme les scans en PDF consultables. Contrôlez ensuite le résultat, car l'OCR confond facilement certains caractères, colonnes ou tableaux.
Elasticsearch limite aussi par défaut le nombre de caractères extraits par son processeur de pièces jointes. Un très long rapport peut être trouvé au début mais pas à la fin si la limite applicable est atteinte. Modifier cette valeur augmente la quantité de texte traitée et stockée. Mesurez le besoin avec des documents réels au lieu de supprimer toute limite sans connaître l'effet sur la mémoire et l'index.
| Fichier pilote | Requête de validation | Diagnostic si absent |
|---|---|---|
| Texte brut | Phrase unique au milieu | Fournisseur ou chemin non indexé |
| PDF textuel | Référence en dernière page | Extraction ou limite de caractères |
| PDF scanné | Numéro visible sur l'image | OCR absent ou incorrect |
| Document bureautique | Mot dans une cellule ou diapositive | Format ou extraction à contrôler |
| Fichier partagé | Terme depuis deux comptes | Propriétaire et droits dans l'index |
Les fichiers chiffrés de bout en bout constituent une autre limite logique : si le serveur ne peut pas lire leur contenu, il ne peut pas l'extraire pour une recherche côté serveur. Décidez avant le déploiement si la priorité est l'indexation du contenu ou son illisibilité par le serveur.
Comment maintenir l'index et corriger une recherche vide ?
Le premier passage se lance avec fulltextsearch:index. Pour les changements suivants, le fournisseur marque les documents à réindexer lorsqu'ils sont modifiés. Le projet prévoit leur traitement lors des passages cron ou par la commande longue fulltextsearch:live. Vérifiez le mécanisme recommandé par la version déployée, puis surveillez qu'il tourne réellement après un redémarrage.
Une recherche vide doit être diagnostiquée dans l'ordre. Confirmez d'abord que le fichier est visible dans Files pour le compte concerné. Vérifiez ensuite qu'il appartient au chemin indexé, que le fournisseur l'extrait et que la plateforme répond. Examinez enfin les erreurs du moteur et l'état du document, plutôt que de réinitialiser immédiatement tout l'index.
sudo -u www-data php occ fulltextsearch:test
sudo -u www-data php occ fulltextsearch:index '{"errors":"reset"}'
La seconde commande efface le journal d'erreurs de l'application avant un nouveau diagnostic. Elle ne répare pas la cause. La commande fulltextsearch:reset supprime l'index de la plateforme et impose une reconstruction. Réservez-la à une opération planifiée, après avoir estimé le temps nécessaire et confirmé que les fichiers sources sont sains.
Ne réinitialisez pas pendant une panne non comprise
Une URL erronée, un certificat refusé, un disque plein ou un extracteur défaillant produira la même panne après reconstruction. Isolez d'abord un document et un compte de test.
Surveillez au minimum la disponibilité d'Elasticsearch, l'espace disque, la durée des passages, le nombre d'erreurs et le délai entre modification et résultat. Après chaque mise à niveau de Nextcloud ou d'une application de recherche, rejouez le petit corpus avant de relancer une indexation générale.
Comment tester les droits sans exposer un document ?
La recherche doit respecter les accès ordinaires aux fichiers. Le test officiel vérifie des scénarios de droits sur des documents factices, mais votre recette doit reproduire les groupes, partages et stockages du site. Créez un fichier avec une expression impossible à deviner, partagez-le uniquement avec un compte autorisé, puis cherchez cette expression depuis les deux comptes.
Répétez le test après un retrait de partage, un changement de groupe et le départ d'un utilisateur pilote. Mesurez aussi le délai avant disparition du résultat. Si l'organisation utilise des règles supplémentaires, des applications tierces ou des montages externes, ne supposez pas qu'elles se traduisent toutes de la même façon dans l'index. Le guide de sécurité Nextcloud fournit la checklist des comptes, sessions et journaux à associer à cette recette.
Protégez enfin la liaison entre Nextcloud et le moteur. Utilisez un compte technique limité à l'index concerné, gardez le service hors d'accès public et changez le secret selon votre procédure. Les sauvegardes, instantanés et journaux liés au moteur doivent suivre la même politique de confidentialité que les documents qu'ils décrivent.
Conclusion
La recherche plein texte Nextcloud repose sur une chaîne complète : fournisseur de fichiers, cœur Full Text Search, connecteur, Elasticsearch et tâche d'indexation. Commencez par un corpus réduit, exécutez fulltextsearch:test, puis validez séparément PDF textuel, scan OCR, document long et refus d'accès. Surveillez les mises à jour et n'effacez l'index qu'après avoir identifié la panne. Sur un service hébergé, demandez explicitement si ces applications et le moteur associé sont disponibles avant de retenir l'offre.