Fermer

octobre 18, 2018

Amélioration de la recherche native WordPress –


Cet article sur la recherche dans WordPress a été publié à l'origine par par Torque Magazine et est reproduit ici avec autorisation.

Si vous avez déjà travaillé sur un site WordPress avec une quantité énorme de messages et de pages, vous peut avoir remarqué quelque chose à propos de la recherche WordPress: il ne fonctionne pas bien. Dans cet article, nous explorons les raisons pour lesquelles la recherche par défaut WordPress n'échelle pas et quelques moyens de l'améliorer.

Méthode de recherche WordPress

Par défaut, la recherche native WordPress effectue une requête ressemblant à quelque chose comme: ceci:

 Une requête de recherche de base de données WordPress native

Décomposons un peu cette requête.

  • Premièrement, nous utilisons SQL_CALC_FOUND_ROWS sur la table de wp_posts . Ceci dit, s'il n'y avait pas de limite (à venir), combien de résultats la requête suivante serait-elle trouvée?
  • Ensuite, nous recherchons dans le post_title post_excerpt et post_content colonnes pour le terme de recherche (dans cet exemple, j'ai cherché "tech").
  • Et nous nous assurons que le contenu renvoyé est un article, une page ou une pièce jointe (média). [19659008] Nous vérifions si le statut est «public», pas supprimé ni privé (si vous êtes un utilisateur connecté, vos recherches personnelles seront également recherchées.)
  • Nous classons les résultats par titre, décroissant. , ou date de publication, décroissant.
  • Enfin, nous limitons les résultats à 10, paginant le reste des résultats.

C’est un tas de vérifications que WordPress effectue simplement pour renvoyer les résultats de recherche. Et chaque fois que vous parcourez avec wp_posts pour effectuer chaque vérification, MySQL traite toutes les lignes de wp_posts. Lorsque vous avez des centaines de milliers de lignes dans la table wp_posts cette requête peut devenir vraiment très laide. Voici quelques points de repère de quelques-uns de mes sites:

 Graphique à barres indiquant le temps d'interrogation par nombre de messages

Sur les sites contenant un très grand nombre de messages, la requête a pris plus de 20 secondes! Il ne s'agit pas d'une option de recherche évolutive pour les sites à fort trafic.

Identification du problème

Sachant ce que nous savons maintenant sur le comportement de recherche par défaut, il est important d'expliquer pourquoi ce n'est peut-être pas idéal pour certains sites Web.

  • WordPress ne recherche que les champs «post_title», «post_content» et «post_excerpt» pour vos termes de recherche. En outre, il présente uniquement les types de publication “post”, “page” et “pièce jointe”. Cela peut être problématique pour les utilisateurs avec des types de publication, des champs personnalisés ou des plugins comme WooCommerce qui ajoutent différents types de page / publication: ces éléments n'apparaîtront pas dans les résultats de la recherche.
  • La requête utilisée par la recherche dans WordPress est très médiocre. 100 000 postes. Une recherche peut prendre plusieurs secondes pour les sites d'actualités ou les sites de médias avec plus de 100 000 publications.
  • Les performances médiocres de la requête de recherche peuvent entraîner des problèmes de performances du serveur si votre site reçoit une grande quantité de trafic de recherche.

Améliorer la recherche native dans WordPress

Maintenant que nous savons que la recherche native dans WordPress n’est plus une option pour de nombreux sites, nous pouvons explorer les solutions de recherche. Sur la base de l'identification des problèmes ci-dessus, nos qualifications pour une solution de recherche incluent:

  • Des outils de recherche permettant de rechercher tout le contenu ou des ensembles de contenus personnalisés, sans se limiter aux types d'article ni aux champs d'article définis par défaut.
  • fonctionnent bien avec des ensembles de données volumineux.
  • Outils de recherche qui ne nuisent pas aux performances du serveur lorsque le trafic est important.

Nous allons explorer ci-dessous plusieurs solutions, notamment des services externes de niveau entreprise et des plugins WordPress.

Algolia Search

Algolia est une solution de recherche pour entreprises dans laquelle vos publications et votre contenu sont indexés hors site et renvoient les résultats à vos utilisateurs. Son ensemble de fonctionnalités comprend la recherche floue, la recherche de géolocalisation, la prise en charge multilingue et la recherche avec des synonymes.

La comparaison des performances de recherche sur un site contenant des milliers de publications présente des avantages évidents avec Algolia. Ci-dessous, la performance de la recherche par défaut de WordPress:

 DevTool affiche les performances de recherche par défaut de WordPress

Notez que la recherche a pris 7,43 secondes avec la recherche par défaut de WordPress. Cependant, après la mise en œuvre de la recherche dans Algolia, les résultats étaient presque instantanés:

 DevTool affiche les performances de recherche dans Algolia

Les résultats pour Algolia étaient environ 15 fois plus rapides que la recherche classique dans WordPress! C'est une amélioration massive des performances. De plus, si le site supporte une grande quantité de trafic avec des recherches simultanées, cela ne causera pas de tension sur le serveur. Déloger les recherches vers un service externe spécialement optimisé pour la recherche est une grande victoire.

Elasticsearch

ElasticPress est un produit fabriqué par Elastic, qui permet de décharger votre recherche sur votre propre instance de serveur Elasticsearch. Cet outil de recherche est unique en ce sens que vous pouvez choisir où héberger votre instance Elasticsearch: votre bureau local, vos serveurs dédiés, ou même sur le même serveur que votre site Web WordPress est hébergé. Et avec le plug-in ElasticPress vous pouvez facilement connecter cette instance à votre site Web pour l'utiliser.

ElasticPress + ElasticSearch est une combinaison gagnante qui fournit d'excellentes fonctionnalités de recherche, telles que:

  • y compris les produits WooCommerce dans les résultats de recherche.
  • Afficher les messages liés sans requête lente et coûteuse
  • Choisissez d'indexer tout, certains ou uniquement le contenu sur votre site Web
  • Complétez automatiquement les suggestions de recherche que les utilisateurs entrent

La recherche étant alors déchargée sur un service optimisé pour la recherche, l'impact sur les sites comptant plusieurs milliers de publications est également renforcé.

Amazon CloudSearch

 CloudSearch

Le service CloudSearch d'Amazon est une solution viable. option en termes de puissance, de performance et d’évolutivité. Amazon utilise un service de paiement «à la carte», ce qui fait de CloudSearch une solution peu coûteuse pour les entreprises. Vous pouvez également personnaliser les éléments indexés dans le processus de configuration, mais la courbe d'apprentissage de ce produit est raide. Bien que certains comme Lift aient créé des plugins WordPress intégrant CloudSearch, ils ne sont pas largement utilisés ou mis à jour souvent, et peuvent ne pas être aussi fiables. Cela signifie qu'il est fort probable que vous développiez votre propre implémentation de plug-in d'Amazon CloudSearch. Vous pouvez utiliser leur Guide du développeur pour CloudSearch pour commencer.

Relevanssi

 Relevanssi

Relevanssi est un plugin WordPress qui optimise la configuration native. WordPress recherche “en interne”. Autrement dit, il cherche votre propre base de données sur votre propre serveur, avec de meilleurs résultats. Quelques avantages clés de ce plugin par rapport à la recherche par défaut de WordPress:

  • Recherches floues (inclure les correspondances partielles)
  • Trier par pertinence, et non par date
  • Indiquez si les résultats doivent correspondre à tous les mots ou uniquement. l'un des mots
  • Recherche dans tout le contenu, y compris les commentaires, les catégories, les balises et les champs personnalisés
  • Des extraits sont affichés et soulignent le moment où la correspondance s'est produite pour le contexte

Le seul aspect que Relevanssi n'améliore pas nécessairement est la vitesse ou l'évolutivité de la fonction de recherche. Relevanssi est ainsi idéal pour les utilisateurs frustrés par le type de résultats obtenus par la recherche WordPress. Il n'est pas idéal pour les utilisateurs qui recherchent des performances améliorées dans le domaine de la recherche.

SearchWP

Enfin, SearchWP est une autre solution de recherche payée pour WordPress. Comme avec Relevanssi, ce plugin étend la recherche pour inclure de meilleurs résultats mais ne prétend pas améliorer les performances de recherche. SearchWP propose de nombreuses options de configuration pour inclure exactement ce que vous voulez dans les résultats de recherche. Recherchez des éléments tels que: produits de commerce électronique, fichiers PDF et médias, articles et champs personnalisés, catégories et tags et sortie de code court. Au-delà des vecteurs de recherche supplémentaires, SearchWP propose également des mots clés dérivés. Ainsi, si votre utilisateur final recherche un mot clé associé, il obtiendra du contenu à partir des mots clés associés dans les résultats.

SearchWP fait également des efforts supplémentaires en termes de journalisation des recherches et de fourniture d'informations sur le trafic de recherche. Cela peut aider à informer votre stratégie de contenu de manière à rendre votre contenu plus facile à trouver.

Choisir la bonne solution de recherche

En fin de compte, la solution de recherche que vous choisirez dépendra de votre budget et des problèmes prioritaires. pour votre équipe. Si vos principales préoccupations sont les performances, Algolia et Elasticsearch sont les grands gagnants. Toutefois, si vous souhaitez simplement obtenir de meilleurs résultats de recherche, Relevanssi et SearchWP sont des options simples mais puissantes. Et si vous souhaitez un moyen économique de personnaliser complètement la façon dont votre site Web effectue une recherche dans un plugin personnalisé, Amazon CloudSearch pourrait être la solution idéale. Vous pouvez utiliser les descriptions ci-dessus pour identifier vos priorités et trouver la solution adaptée à ce besoin. Comme toujours, veillez à tester d'abord toute nouvelle intégration ou plug-in dans un environnement de transfert ou de développement! Cela vous permettra de tester en toute liberté votre nouvelle implémentation de recherche.




Source link