Indexation automatique

Bien que l'index de la Recherche avancée soit automatiquement tenu à jour à chaque fois que des contenus sont modifiés, il existe certaines circonstances où vous devez relancer l'Indexeur. Vous pouvez le faire manuellement à l'aide du bouton Indexer de la barre d'outils sur la page Recherche avancée : Plan des contenus. Cependant, si vous devez réindexer le contenu automatiquement, il est également possible d'exécuter l'Indexeur depuis l'interface en ligne de commande (CLI). Cela permet notamment de lancer l'Indexeur de façon pratique depuis une tâche cron.

Depuis le répertoire CLI, la ligne de commande est :

php joomla.php finder:index

Une sortie type de l'Indexeur en ligne de commande ressemble à ceci :

Smart Search INDEXER
============================

Starting Indexer
Setting up Finder plugins
Setup 154 items in 0.094 seconds.
 * Processed batch 1 in 0.213 seconds.
 * Processed batch 2 in 0.182 seconds.
 * Processed batch 3 in 0.177 seconds.
 * Processed batch 4 in 0.009 seconds.
Total Processing Time: 0.676 seconds.

Purger avant d'indexer

Normalement, l'exécution de l'Indexeur effectue une mise à jour incrémentale de l'index. C'est-à-dire qu'elle ne met à jour l'index que pour les contenus qui ont changé depuis la dernière mise à jour de l'index. Elle ne supprimera pas, par exemple, les éléments provenant de plugins désinstallés issus d'une indexation précédente. Ainsi, si vous devez effacer complètement toutes les entrées existantes de l'index avant de le reconstruire entièrement, vous devez effectuer une opération de « purge puis indexation ». Pour cela, vous pouvez ajouter l'argument --purge à la ligne de commande, comme ceci

php joomla.php finder:index --purge

Notez que cette opération tentera de préserver tous les filtres statiques que vous auriez pu configurer, alors que le choix de Maintenance→Vider l'index dans la barre d'outils ne préservera pas vos filtres statiques.

Configurer une tâche cron

Bien que les détails spécifiques dépassent le cadre de cet article, en général il vous suffira de saisir la commande ci-dessus dans le gestionnaire de tâches cron et de préciser l'heure ou les heures auxquelles la tâche doit être exécutée. Vous devrez probablement inclure le chemin complet vers le fichier PHP CLI de Joomla!. Par exemple, comme ceci

php /var/www/myjoomla/cli/joomla.php finder:index --purge

Il peut également être nécessaire de préciser le chemin complet vers la commande php, comme par exemple /usr/local/opt/[email protected]/bin/php.

Problèmes de dépassement de mémoire

Si votre site a des exigences d'indexation particulièrement complexes, il est possible que l'allocation de mémoire standard ne soit pas suffisante pour que l'Indexeur puisse s'exécuter jusqu'au bout. Vous pouvez augmenter la mémoire allouée à l'Indexeur en ligne de commande à l'aide d'un paramètre supplémentaire sur la ligne de commande, comme ceci :

php -d memory_limit=256M joomla.php finder:index

Remplacez 256M par la valeur appropriée à votre situation.

L'Indexeur en ligne de commande utilise les mêmes paramètres que l'Indexeur de la page Configuration générale→Recherche avancée→Indexer. Vous pouvez accéder à ces paramètres en cliquant sur le bouton Paramètres de la barre d'outils sur n'importe quelle page du menu Recherche avancée. Le champ Taille du lot de l'Indexeur affecte la quantité de mémoire utilisée par l'Indexeur.