Pourquoi utiliser la recherche avancée ?

La technologie de recherche s'est considérablement améliorée au fil des années depuis le lancement initial de Joomla, et pourtant le composant de recherche standard et basique n'a pas beaucoup changé depuis. Il reste très rudimentaire et manque des fonctionnalités de recherche que les utilisateurs du web attendent désormais, notamment en raison de la prévalence de moteurs de recherche avancés tels que Google. La recherche avancée permet d'intégrer certaines de ces fonctionnalités de recherche avancées dans votre site web.

Pourquoi créer un plugin de recherche avancée ?

En général, si vous disposez d'un type de contenu qui n'est pas géré par les composants principaux de Joomla, et que vous souhaitez permettre aux visiteurs de votre site de rechercher ce contenu, vous devrez écrire un plugin de recherche avancée pour le prendre en charge. Par exemple, supposons que vous ayez un composant qui stocke des informations sur différentes espèces animales. Le composant maintient une table de base de données contenant des champs tels que le nom scientifique, le nom vernaculaire, la classification et une description. Vous devrez alors créer un plugin qui indiquera à l'indexeur de la recherche avancée comment indexer les données de cette table. En plus d'indexer des mots et des expressions individuels, vous pouvez également demander au plugin d'ajouter chaque enregistrement à un plan des contenus, qui pourrait dans ce cas inclure les classifications biologiques du règne, de l'embranchement, de la classe, de l'ordre et de la famille. Les plans des contenus peuvent ensuite être utilisés pour filtrer les résultats de recherche.

Est-il possible de sélectionner plusieurs nœuds à partir des listes déroulantes de filtres ?

Oui, c'est entièrement pris en charge par la recherche avancée elle-même. En effet, vous pouvez utiliser l'interface utilisateur de votre choix pour concevoir les filtres. Il suffit de regarder le code fourni dans le module et le composant standards du site public pour voir comment procéder.

J'ai un site de grande taille. Puis-je utiliser la recherche avancée ?

Les sites de grande taille pourraient avoir avantage à utiliser un moteur de recherche autonome dédié, tel que Solr, plutôt que l'implémentation en pur PHP utilisée dans la recherche avancée. Dans cette première itération de la recherche avancée dans Joomla, il est probable que des problèmes liés à la montée en charge et à la performance apparaissent. Il existe également un risque de conditions de concurrence lors de la mise à jour de l'index en cas de modifications fréquentes du contenu. Ces problèmes devraient être traités plus en profondeur dans une future version de Joomla.

Pourquoi la recherche avancée a-t-elle autant de tables ?

La recherche avancée ajoute un bon nombre de nouvelles tables à une installation Joomla, dont 16 « tables de mapping ». Ces tables de mapping résolvent la relation plusieurs-à-plusieurs entre les termes de recherche et les éléments de contenu qui les contiennent. En théorie, ces 16 tables pourraient être fusionnées en une seule table, ce qui aurait un impact négligeable sur les petits sites. Cependant, sur des sites plus importants, cela aurait un impact significatif sur les performances, car la table de mapping contiendrait un très grand nombre d'entrées et la mise à jour d'une table aussi volumineuse peut prendre beaucoup de temps.

Pourquoi la recherche avancée utilise-t-elle autant d'espace disque ?

Le maintien d'un index de termes de recherche nécessite une quantité raisonnable d'espace disque, qui augmente avec le nombre de termes que contiennent les éléments de contenu. Comme les expressions sont également indexées, plus les expressions sont longues, plus l'espace disque requis est important. Pour la recherche avancée dans Joomla 2.5, la longueur maximale d'une expression a été fixée à 3 termes, ce qui constitue un compromis raisonnable entre la facilité d'utilisation de la recherche et l'utilisation de l'espace disque. Il est probable qu'il s'agisse d'un paramètre pouvant être ajusté dans une future version de la recherche avancée.

Pourquoi les entrées dans les tables de mapping ne sont-elles pas réparties uniformément ?

Il est peut-être surprenant que le nombre d'entrées dans chacune des tables de mapping ne soit même pas approximativement le même. Les performances ne seraient-elles pas améliorées par une répartition uniforme ? En fait, non, il existe un compromis entre les performances d'insertion et les performances de recherche, une répartition uniforme étant favorable aux premières mais défavorable aux secondes. Il s'agit d'un domaine de recherche continue, le nombre de tables et l'algorithme de distribution étant susceptibles d'évoluer en fonction de l'expérience acquise.

Pourquoi existe-t-il un plugin Contenu - Recherche avancée distinct ?

Il s'agit simplement d'une commodité qui permet d'activer ou de désactiver plus facilement tous les plugins de recherche avancée en une seule opération. Cela a été jugé souhaitable car la recherche avancée n'est pas activée par défaut dans Joomla 2.5.

Pourquoi les plugins de recherche avancée utilisent-ils des événements distincts tels que onFinderContentAfterSave ?

La recherche avancée utilise ses propres événements, tels que onFinderContentAfterSave, plutôt que l'équivalent générique onContentAfterSave, uniquement par commodité, afin de permettre d'activer ou de désactiver facilement l'indexation de la recherche avancée en activant/désactivant un seul plugin.

Pourquoi la recherche avancée n'est-elle pas activée par défaut dans Joomla 2.5 et Joomla 3.x ?

Joomla 2.5 étant la dernière version de la série 1.x/2.x, elle doit conserver un degré élevé de compatibilité ascendante avec la version précédente de la série. Comme la recherche avancée est quelque chose d'entièrement nouveau et ne ressemble en rien au composant de recherche classique de cette version ou des versions antérieures, il a été jugé important que les utilisateurs effectuant une mise à niveau depuis ces versions antérieures ne soient pas contraints de changer la façon dont la recherche fonctionne sur leurs sites. En effet, l'activation de la recherche avancée est quelque chose qui doit être fait de manière réfléchie.

Pourquoi n'y a-t-il pas d'API de recherche ?

L'objectif de la présente version de la recherche avancée était de déplacer le code de l'ancien composant JXtended Finder vers la dernière version de Joomla. Comme ce code était déjà considéré comme stable et qu'il n'y avait qu'une courte fenêtre d'opportunité pour le porter, il a été jugé qu'un redéveloppement majeur de Finder dépassait le cadre de la version Joomla 2.5. Par conséquent, le code utilise des plugins afin d'éviter toute modification du code du CMS principal, plutôt que de développer une véritable API de recherche. Nous envisageons de créer une telle API pour une future itération de Joomla.

La recherche avancée peut-elle effectuer une recherche à facettes ?

Oui. La recherche avancée disponible depuis la page des résultats de recherche et le module de recherche avancée constituent un exemple de la façon dont vous pouvez filtrer les résultats de recherche pour produire une recherche à facettes. Rien ne vous empêche de créer vos propres variantes de ces idées de base. Par exemple, vous pourriez modifier les simples listes déroulantes pour accepter des sélections multiples, ou remplacer les listes déroulantes par une série de cases à cocher.

Pourquoi les recherches avec caractères génériques ne sont-elles pas supportées ?

L'ancienne recherche Joomla utilisait une méthode de recherche très primitive qui s'appuyait sur la recherche FULLTEXT fournie par la base de données. Cette méthode était très inefficace mais offrait un moyen simple de traiter les requêtes de recherche avec caractères génériques. La recherche avancée propose une fonctionnalité d'autocomplétion qui est en fait une recherche avec caractère générique des termes dans l'index, mais la recherche complète avec caractères génériques n'est pas supportée en raison du risque de paralyser le serveur en cas d'abus de cette fonctionnalité. Dans la plupart des cas, la recherche avec caractères génériques est utilisée pour tenir compte des variations d'un terme de recherche. Par exemple, rechercher juggl* afin de capturer les références à juggling ainsi qu'à juggler. La recherche avancée tente d'éviter le recours aux recherches avec caractères génériques en prenant en charge la racinisation des mots, où les mots ayant la même racine sont considérés comme équivalents, de sorte qu'une recherche sur jongleur retrouvera également les occurrences de jonglage sans avoir besoin d'utiliser des caractères génériques.

La recherche avancée peut-elle être utilisée sur des sites multilingues ?

Oui, mais certains problèmes restent à résoudre, notamment en ce qui concerne la prise en charge des langues asiatiques.

  • Pour être indexé correctement, vous devez vous assurer que tout le contenu est en UTF-8 valide.
  • La fonctionnalité Vouliez-vous dire ? utilise la fonction Soundex pour trouver des expressions de recherche phonétiquement similaires. Cependant, Soundex ne fonctionne pas bien pour les langues non anglaises et, pour beaucoup d'entre elles, ne fonctionne pas du tout. Nous recherchons actuellement des méthodes alternatives pour proposer cette fonctionnalité.

Si vous utilisez la recherche avancée sur un site multilingue et que vous rencontrez des problèmes, merci de les signaler sur le gestionnaire de suivi afin que nous puissions mieux comprendre les problèmes à résoudre.

Les plugins Finder de jXTended fonctionneront-ils avec la recherche avancée ?

Non. Vous devrez mettre à jour les plugins Finder pour qu'ils fonctionnent avec la recherche avancée. Cependant, les modifications ne devraient pas être difficiles à mettre en œuvre et, dans la plupart des cas, elles aboutiront à un code nettement plus réduit. Si vous examinez les plugins de recherche avancée actuels, vous constaterez que la mise à jour d'un plugin Finder est plutôt simple.