Améliorer la recherche dans Nextcloud avec Nextant
Rédigé par dada / 03 juin 2017 / 3 commentaires
La recherche dans Nextcloud est bien foutue mais commence à montrer ses limites quand on s'amuse à stocker une grande quantité de fichiers. En plus, elle ne va pas analyser ce qui se passe au niveau du contenu. C'est là que l'ami Solr débarque via une extension plutôt pratique : Nextant.
J'annonce tout de suite, ce billet va parler d'un outil en Java, et même qu'il va falloir l'installer. Si vous faites partie de ceux qui s'obstinent à dire que Java, c'est de la merde, plutôt que de pester sur des développeurs d'applications, au mieux, maladroits, passez votre chemin.
C'est aussi un peu compliqué, mais bon, je vais tenter de faire de mon mieux pour vous rendre la tâche presque simple !
Installer Java
On attaque fort, j'avais prévenu ! Si vous êtes sous Debian 8, vous aurez besoin de passer par les backports puisque la version présente dans les dépôts classiques est trop ancienne. Il faut les mettre en place et taper la commande suivante :apt-get -t jessie-backports install openjdk-8-jdk
Vérifier la version utilisée par le système
Les versions de Java cohabitent dans votre système. Si vous aviez déjà du java, il faut faire comprendre à l'OS que c'est la toute dernière qu'il faut :root@dadall:/var/www/# java -versionSi le résultat retourné n'est pas le même que le mien, corrigez le souci en passant par l'update-alternatives :
openjdk version "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-8u131-b11-1~bpo8+1-b11)
OpenJDK 64-Bit Server VM (build 25.131-b11, mixed mode)
root@dadall:/var/www/html/nc# update-alternatives --config javaDans mon cas, tapez 2 et vous en aurez fini avec Java.
Il existe 2 choix pour l'alternative java (qui fournit /usr/bin/java).
Sélection Chemin Priorité État
------------------------------------------------------------
0 /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java 1071 mode automatique
1 /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java 1071 mode manuel
* 2 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 1069 mode manuel
Appuyez sur <Entrée> pour conserver la valeur par défaut[*] ou choisissez le numéro sélectionné :
Installer Solr
On va passer par l'installeur automatique. C'est bien plus simple et ça permet de ne pas se prendre la tête.D'abord, prenez le temps de créer un utilisateur solr :
adduser --disabled-login solrPlacez-vous dans sa home et récupérez les sources :
su solr
cd ~
$ wget http://mirrors.ircam.fr/pub/apache/lucene/solr/6.5.1/solr-6.5.1.tgzPuis lancez la procédure :
$ tar -zxvf solr-6.5.1.tgz
# bash solr-6.5.1/bin/install_solr_service.sh solr-6.5.1.tgzUne fois terminée, on va faire un peu de configuration. On va simplement dire à Solr de ne répondre qu'aux sollicitations locales en remplaçant cette ligne :
<Set name="host"><Property name="jetty.host" /></Set>par :
<Set name="host"><Property name="jetty.host" default="127.0.0.1" /></Set>dans le fichier présent là-bas : /opt/solr/server/etc/jetty-http.xml. C'est une configuration simple mais importante : elle évite de rendre vos données accessibles à l'extérieur.
Vous pouvez maintenant démarrer la bête :
# /etc/init.d/solr startSolr est maintenant démarré mais il lui marque un dernier truc : un core. On va le créer en deux minutes en tapant ça avec le user solr créé pour l'occasion :
/opt/solr/bin/solr create -c nextantEt voilà pour Solr ! Place à l'extension !
Installer Nextant
Bon, là, si vous avez réussi toutes les étapes précédentes, c'est que vous pouvez aller cliquer dans la gestion des applications de votre Nextcloud pour activer le bousin. Tout est déjà rempli pour vous. C'est très clair et un bouton «tester» est là pour vous permettre de tout valider !Solr fonctionne sur le principe des indexations : à un instant T, il va gober tout ce qu'il y a à savoir dans vos fichiers et l'organiser à sa sauce. Pour la première, il est plus que conseillé de la faire à la main en tapant la commande (avec le user de votre Nextcloud, pas le user solr) :
./occ nextant:index
L'indexation de nouveau contenu ne se fera pas en temps réel mais via un cron Nextcloud. C'est à dire de temps en temps, alors ne vous étonnez pas si le dernier document que vous venez d'ajouter n’apparaît pas immédiatement dans les résultats de recherche.
Une section «Pour aller plus loin» est disponible dans la doc de Nextant. Elle indique, entre autre, comment exclure des répertoires de l'indexation. C'est pas mal si vous ne voulez pas voir certaines infos apparaître maladroitement.