


Utilisation du solarium avec SOLR pour la recherche - avancé
Il s'agit de la quatrième et dernière partie d'une série sur l'utilisation de l'implémentation de recherche SOLR d'Apache avec Solarium, une bibliothèque PHP pour l'intégrer dans votre application comme si elle était native.
Dans les trois premières parties, nous avons installé et configuré Solr et Solarium et commencé à créer un exemple d'application pour la recherche de films. Nous avons également examiné la recherche à facettes.
Nous allons terminer la série en regardant des fonctionnalités plus avancées de SOLR, et comment les utiliser avec Solarium.
Les plats clés
- Utilisez la fonction de mise en évidence de SOLR avec Solarium pour améliorer la visibilité des résultats de la recherche en marquant des mots ou des phrases appariés dans des documents, offrant des options de surlimination à la fois basées sur les extraits.
- Intégrer les fonctionnalités d'observance automatique dans vos applications de recherche à l'aide du composant Suggeter de Solr, qui analyse les champs d'index pour la correspondance de motifs pour suggérer des termes de requête dynamiquement.
- Utilisez la configuration basée sur la table pour la configuration des requêtes dans le solarium, permettant une personnalisation détaillée des paramètres de recherche et une manipulation des résultats.
- Développez les capacités de SOLR en ajoutant des cœurs supplémentaires, qui impliquent de créer des répertoires et des fichiers de configuration spécifiques pour gérer efficacement différents ensembles de données ou des critères de recherche.
- Personnalisez le comportement SOLR avec des fichiers de configuration supplémentaires tels que synonyms.txt et mots stop.txt pour affiner la compréhension et le traitement par le moteur de recherche du langage de requête, améliorant la pertinence et la précision de la recherche.
mettant en évidence les résultats avec solr
Le composant de mise en évidence vous permet de mettre en évidence les parties d'un document qui a correspondant à votre recherche. Son comportement autour de ce qui est montré dépend du terrain - s'il s'agit d'un titre, c'est qu'il le montrera dans son intégralité avec les mots appariés présents, et des champs plus longs - comme un synopsis ou le corps d'un article - il mettra en évidence le mots mais en utilisant des extraits; Tout comme les résultats de recherche de Google.
Pour configurer la mise en évidence, vous devez d'abord spécifier les champs à inclure. Ensuite, vous pouvez définir un préfixe et un post-fixe correspondant pour les mots ou phrases en surbrillance. Ainsi, par exemple, pour rendre les mots et les phrases mis en évidence audacieux:
$hl = $query->getHighlighting(); $hl->setFields(array('title', 'synopsis')); $hl->setSimplePrefix('<strong>'); $hl->setSimplePostfix('</strong>');
Alternativement, pour ajouter une couleur d'arrière-plan:
$hl = $query->getHighlighting(); $hl->setFields(array('title', 'synopsis')); $hl->setSimplePrefix('<span style="background:yellow;">'); $hl->setSimplePostfix('</span>');
ou vous pouvez même utiliser les paramètres par champ:
$hl = $query->getHighlighting(); $hl->getField('title')->setSimplePrefix('<strong>')->setSimplePostfix('</strong>'); $hl->getField('synopsis')->setSimplePrefix('<span style="background:yellow;">')->setSimplePostfix('</span>');
Une fois que vous avez configuré le composant de mise en évidence dans votre implémentation de recherche, il y a un peu plus de travail à faire dans l'affichage dans votre vue de résultats de recherche.
Tout d'abord, vous devez extraire le document en surbrillance de la composante de mise en évidence par ID:
$highlightedDoc = $highlighting->getResult($document->id);
Maintenant, vous pouvez accéder à tous les champs en surbrillance en itérant à travers eux, en tant que propriétés du document mis en évidence:
if($highlightedDoc){ foreach($highlightedDoc as $field => $highlight) { echo implode(' (...) ', $highlight) . '<br/>'; } }
ou, vous pouvez utiliser getfield ():
$hl = $query->getHighlighting(); $hl->setFields(array('title', 'synopsis')); $hl->setSimplePrefix('<strong>'); $hl->setSimplePostfix('</strong>');
Les champs en surbrillance ne renvoient pas simplement le texte, mais à la place, ils retourneront un tableau d '«extraits» de texte. S'il n'y a pas de correspondance pour ce champ particulier - par exemple si votre recherche correspondait au titre mais pas au synopsis - alors ce tableau sera vide.
Le code ci-dessus renverra un maximum d'un extrait. Pour modifier ce comportement, vous pouvez utiliser la méthode setSnippets ():
$hl = $query->getHighlighting(); $hl->setFields(array('title', 'synopsis')); $hl->setSimplePrefix('<span style="background:yellow;">'); $hl->setSimplePostfix('</span>');
Par exemple, supposons que vous recherchiez le mot «étoile». L'un des résultats a un synopsis qui se lit comme suit:
Cet événement de cinéma à ne pas manquer mettra en vedette l'un des moments les plus mémorables de l'histoire de la télévision et des clips exclusifs sur la fabrication du meilleur des mondes et de Star Trek: The Next Generation Season 3. Se déroulant au 24e siècle, La génération suivante a été créée par Gene Roddenberry plus de 20 ans après la série originale de Star Trek. La génération suivante est devenue la série la plus longue de la franchise Star Trek, composée de 178 épisodes au cours de 7 saisons. Star Trek: The Next Generation - Le meilleur des deux mondes est la première occasion de voir le meilleur des deux mondes, l'un des plus grands épisodes télévisés de tous les temps, en tant que long métrage glorieusement remasterisé dans certains cinémas de films nationaux.
Le tableau de synopsis du document en surbrillance contiendra trois éléments:
- Histoire et clips exclusifs sur la fabrication du meilleur des mondes et Star Trek: The Next Generation
- après la série originale de Star Trek. La génération suivante est devenue la série la plus longue de The Star
- Franchise Trek, composée de 178 épisodes sur 7 saisons. Star Trek: The Next Generation - The Best of
Une façon d'afficher plusieurs extraits est de les imploser, par exemple:
$hl = $query->getHighlighting(); $hl->getField('title')->setSimplePrefix('<strong>')->setSimplePostfix('</strong>'); $hl->getField('synopsis')->setSimplePrefix('<span style="background:yellow;">')->setSimplePostfix('</span>');
Cela se traduit par ce qui suit:
Histoire et clips exclusifs sur la fabrication du meilleur des mondes et Star Trek: The Next Generation… après la série originale de Star Trek. La génération suivante est devenue la série la plus longue de la franchise Star… Trek, composée de 178 épisodes en 7 saisons. Star Trek: The Next Generation - The Best of
Il existe un certain nombre d'autres paramètres que vous pouvez utiliser pour modifier le comportement du composant de mise en évidence, qui sont expliqués ici.
Intégration de la mise en évidence dans notre recherche de film
Maintenant que nous avons couvert comment utiliser la mise en évidence, l'intégrer dans notre application de recherche de films devrait être simple.
La première chose à faire est de modifier les applications / contrôleurs / HomeController.php en ajoutant ce qui suit, juste avant d'exécuter la recherche:
$highlightedDoc = $highlighting->getResult($document->id);
Ensuite, les résultats de la recherche - dont vous vous souviendrez sont dans l'application / vues / home / index.blade.php - devenir:
$hl = $query->getHighlighting(); $hl->setFields(array('title', 'synopsis')); $hl->setSimplePrefix('<strong>'); $hl->setSimplePostfix('</strong>');
Remarquez comment chaque résultat de recherche mélange et correspond essentiellement aux champs entre le document de résultat de recherche et le document mis en évidence - ce dernier est effectivement un sous-ensemble du premier. Selon votre schéma, vous pouvez avoir tous vos champs disponibles dans la version en surbrillance.
Suggester - Ajout de la saisie semi-automatique
Le composant Suggeter est utilisé pour suggérer des termes de requête basés sur une entrée de requête incomplète. Essentiellement, il examine l'index sur un champ donné et extrait les termes de recherche qui correspondent à un certain modèle. Vous pouvez ensuite commander ces suggestions par fréquence pour augmenter la pertinence de la recherche.
Pour configurer le Suggester, nous devons le configurer dans votre fichier solrconfig.xml. Ouvrez-le Placez l'extrait suivant de XML quelque part près des autres déclarations
$hl = $query->getHighlighting(); $hl->setFields(array('title', 'synopsis')); $hl->setSimplePrefix('<span style="background:yellow;">'); $hl->setSimplePostfix('</span>');
Vous remarquerez un certain nombre de références à «spellcheck», mais c'est simplement parce que le composant Suggester réutilise une grande partie de cette fonctionnalité en interne.
Le bit important à remarquer est l'élément
Redémarrez SOLR, et vous pouvez maintenant essayer d'exécuter une question de suggestion via votre navigateur Web:
$hl = $query->getHighlighting(); $hl->getField('title')->setSimplePrefix('<strong>')->setSimplePostfix('</strong>'); $hl->getField('synopsis')->setSimplePrefix('<span style="background:yellow;">')->setSimplePostfix('</span>');
(vous devrez peut-être modifier le numéro de port, selon la façon dont vous configurez SOLR)
La sortie doit ressembler un peu à ceci:
$highlightedDoc = $highlighting->getResult($document->id);
Comme vous pouvez le voir, Solr a retourné quatre matchs possibles pour «ho» - * ho ** use, ** ho ** use, ** ho ** rror et ** ho ** moi. Malgré * à la maison et horreur être avant house dans l'alphabet, house apparaît d'abord en raison d'être l'un des termes de recherche les plus courants de notre index .
Utilisons ce composant pour créer une assortie semi-automatique pour notre zone de recherche, ce qui suggérera des termes de recherche courants car l'utilisateur tape sa requête.
Tout d'abord, définissez l'itinéraire:
if($highlightedDoc){ foreach($highlightedDoc as $field => $highlight) { echo implode(' (...) ', $highlight) . '<br/>'; } }
Inclure jQuery UI (et jQuery lui-même) dans votre disposition:
if($highlightedDoc){ $highlightedTitle = $highlightedDoc->getField('title'); }
Inclure un thème jQuery UI:
$hl = $query->getHighlighting(); $hl->setSnippets(5); // . . . as before . . .
Et enfin, ajoutez des JS pour initialiser la saisie semi-automatique:
implode(' ... ', $highlightedDoc->getField('synopsis'))
C'est tout ce qu'il y a - essayez-le en exécutant quelques recherches.
Configuration basée sur le tableau
Si vous préférez, vous pouvez utiliser un tableau pour configurer votre requête - par exemple:
// Get highlighting component, and apply settings $hl = $query->getHighlighting(); $hl->setSnippets(5); $hl->setFields(array('title', 'synopsis')); $hl->setSimplePrefix('<span style="background:yellow;">'); $hl->setSimplePostfix('</span>'); // Execute the query and return the result $resultset = $this->client->select($query);
ajoutant des noyaux supplémentaires
Au démarrage, Solr traverse le répertoire domestique spécifié à la recherche de cœurs, qu'il identifie lorsqu'il localise un fichier appelé Core.propeties. Jusqu'à présent, nous avons utilisé un noyau appelé Collection1, et vous verrez qu'il contient trois éléments clés:
Le fichier core.propertes. Au plus basique, il contient simplement le nom de l'instance.
Le répertoire FOR contient les fichiers de configuration de l'instance. Au minimum, ce répertoire doit contenir un fichier schema.xml et un fichier solrconfig.xml.
Le répertoire de données contient les index. L'emplacement de ce répertoire peut être remplacé, et s'il n'existe pas, il sera créé pour vous.
Donc, pour créer une nouvelle instance, suivez ces étapes:
- Créez un nouveau répertoire dans votre répertoire domestique - Films dans l'exemple d'application
- Créez un répertoire confre dans ce
- Créer ou copier un fichier schema.xml et le fichier solrconfig.xml dans le répertoire confre et personnaliser en conséquence
- Créez un fichier texte appelé core.properties dans le répertoire domestique, avec le contenu suivant:
name = instanceName
… où instancename est le nom de votre nouveau répertoire.
Notez que la configuration schema.xml qui est expédiée dans le répertoire des exemples contient des références à un certain nombre de fichiers texte - par exemple des mots d'arrêt.txt, des protwords.txt, etc. - que vous devrez peut-être également copier.
puis redémarrez Solr.
Vous pouvez également ajouter un nouveau noyau via l'interface Web administrative dans votre navigateur Web - cliquez sur Core Admin sur le côté gauche, puis ajoutez Core.
Configuration supplémentaire
Il y a quelques fichiers de configuration supplémentaires qui valent une mention.
Le fichier de mots stopS.txt - ou plus spécifiquement, les fichiers spécifiques à la langue tels que Lang / Stopwords_en.txt - contiennent des mots qui doivent être ignorés par l'indexeur de recherche, tel que «A», «le» et «AT» . Dans la plupart des cas, vous n'aurez probablement pas besoin de modifier ce fichier.
Selon votre application, vous pouvez constater que vous devez ajouter des mots à protwords.txt. Ce fichier contient une liste de mots protégés qui ne sont pas «entités» - c'est-à-dire réduits à leur forme de base; Par exemple, «demandé» devient «demander», «travailler» devient «travail». Parfois, les tentatives de «corriger» les mots, en supprimant peut-être ce qu'elle pense, ce sont des lettres de nombres erronées à la fin. Vous pourriez faire face à des zones géographiques et constater que le «Maine» est en train de «Maine».
Vous pouvez spécifier des synonymes - des mots avec la même signification - dans synonyms.txt. Synonymes séparés avec des virgules en ligne. Par exemple:
$hl = $query->getHighlighting(); $hl->setFields(array('title', 'synopsis')); $hl->setSimplePrefix('<strong>'); $hl->setSimplePostfix('</strong>');
Vous pouvez également utiliser Synoyms.txt pour aider à corriger les erreurs d'orthographe courantes à l'aide de mappages de synonymes, par exemple:
$hl = $query->getHighlighting(); $hl->setFields(array('title', 'synopsis')); $hl->setSimplePrefix('<span style="background:yellow;">'); $hl->setSimplePostfix('</span>');
Si vous utilisez des champs de devises, vous souhaiterez peut-être mettre à jour et garder un œil sur Currency.xml, qui spécifie certains exemple de taux de change - qui sont bien sûr très volatils.
Résumé
Dans cette série, nous avons examiné l'implémentation SOLR d'Apache pour la recherche et utilisé la bibliothèque PHP Solarium pour interagir avec elle. Nous avons installé et configuré SOLR avec un exemple de schéma, et construit une application conçue pour rechercher un ensemble de films, qui montre un certain nombre de fonctionnalités de SOLR. Nous avons examiné la recherche à facettes, mis en évidence les résultats et le composant Dismax. J'espère que cela vous donnera suffisamment de mise à la terre pour l'adapter pour utiliser SOLR pour la recherche dans vos applications.
Pour plus de lecture, vous souhaiterez peut-être télécharger le guide de référence SOLR en tant que PDF ou consulter la documentation de Solarium.
Questions fréquemment posées (FAQ) sur l'utilisation de Solarium avec SOLR pour la recherche avancée
Comment puis-je implémenter la saisie semi-automatique avec Solr et Solarium?
Implémentation de la saisie semi-automatique avec SOLR et Solarium implique la création d'un Suggeter dans votre fichier de configuration SOLR. Ce suggère sera utilisé pour fournir des suggestions pour les requêtes utilisateur. Une fois le Suggester mis en place, vous pouvez utiliser la requête Suggerster de Solarium pour obtenir des suggestions. La requête Suggeter renvoie une liste de suggestions en fonction de l'entrée de l'utilisateur, que vous pouvez ensuite afficher à l'utilisateur.
Quelle est la différence entre le solarium et le stelllarium?
Le solarium et le stellaire sont deux différents logiciels. Solarium est une bibliothèque PHP qui fournit une API pour interagir avec SOLR, une puissante plate-forme de recherche. D'un autre côté, Stellarium est un planétarium open source gratuit pour votre ordinateur. Il montre un ciel réaliste en 3D, tout comme ce que vous voyez avec l'œil nu, les jumelles ou un télescope.
Comment puis-je utiliser Solarium pour interroger Solr?
pour utiliser le solarium pour interroger Solr , vous devez d'abord créer une instance client avec la configuration de votre serveur Solr. Ensuite, vous pouvez créer une requête sélectionnée à l'aide de la fonction CreateSelect du client. Vous pouvez définir divers paramètres sur la requête, tels que les champs à retourner, la chaîne de requête et tous les filtres. Une fois la requête configurée, vous pouvez l'exécuter à l'aide de la fonction EXECUTE du client, qui renverra un ensemble de résultats que vous pouvez itérater pour accéder aux documents individuels.
Comment puis-je ajouter des documents à SOLR à l'aide de Solarium?
Pour ajouter des documents à SOLR à l'aide de Solarium, vous devez d'abord créer une instance client avec la configuration de votre serveur Solr. Ensuite, vous pouvez créer une requête de mise à jour à l'aide de la fonction CreateUpdate du client. Vous pouvez ajouter des documents à cette requête à l'aide de la fonction addDocument, qui prend une instance de document comme argument. L'instance de document doit avoir tous les champs et valeurs que vous souhaitez ajouter au document. Une fois que tous les documents sont ajoutés à la requête, vous pouvez l'exécuter à l'aide de la fonction d'exécution du client.
Comment puis-je supprimer des documents de SOLR à l'aide de Solarium?
Pour supprimer des documents de Solr à l'aide de Solarium, vous Besoin d'abord de créer une instance client avec la configuration de votre serveur Solr. Ensuite, vous pouvez créer une requête de mise à jour à l'aide de la fonction CreateUpdate du client. Vous pouvez ajouter des commandes delete à cette requête à l'aide des fonctions AddDeleteById ou AddDeleteByQuery. Une fois que toutes les commandes de suppression sont ajoutées à la requête, vous pouvez l'exécuter à l'aide de la fonction d'exécution du client.
Comment puis-je optimiser mon index SOLR à l'aide de Solarium?
Pour optimiser votre index SOLR à l'aide de Solarium, vous devez d'abord créer une instance client avec la configuration de votre serveur Solr. Ensuite, vous pouvez créer une requête de mise à jour à l'aide de la fonction CreateUpdate du client. Vous pouvez ajouter une commande Optimize à cette requête en utilisant la fonction Addoptimize. Une fois que la commande Optimiser est ajoutée à la requête, vous pouvez l'exécuter à l'aide de la fonction d'exécution du client.
Comment puis-je gérer les erreurs lors de l'utilisation du solarium avec SOLR?
Lorsque vous utilisez le solarium avec SOLR, des erreurs Peut être géré en attrapant le solarium_exception lancé par la fonction d'exécution du client. Cette exception contiendra des informations sur l'erreur, telles que le message d'erreur et la réponse SOLR.
Comment puis-je utiliser des facettes avec Solarium et Solr?
Pour utiliser des facettes avec Solarium et Solr, vous Besoin d'abord de créer une requête sélectionnée à l'aide de la fonction CreateSelect du client. Ensuite, vous pouvez ajouter un ensemble de facettes à la requête à l'aide de la fonction addfacetSet. Vous pouvez ajouter différents types de facettes à l'ensemble de facettes, tels que les facettes de champ, les facettes de requête et les facettes de portée. Une fois les facettes configurées, vous pouvez exécuter la requête à l'aide de la fonction d'exécution du client, qui renverra un ensemble de résultats qui inclut les résultats des facettes.
Comment puis-je utiliser la mise en évidence avec Solarium et Solr?
Pour utiliser la mise en évidence avec Solarium et Solr, vous devez d'abord créer une requête sélectionnée à l'aide de la fonction CreateSelect du client. Ensuite, vous pouvez ajouter un surligneur à la requête en utilisant la fonction AddHighLighting. Vous pouvez définir divers paramètres sur le surligneur, tels que les champs à mettre en surbrillance et le nombre d'extraits à retourner. Une fois le surligneur configuré, vous pouvez exécuter la requête à l'aide de la fonction d'exécution du client, qui renverra un ensemble de résultats qui comprend les résultats de mise en évidence.
Comment puis-je utiliser la pagination avec le solarium et le solr?
Pour utiliser la pagination avec Solarium et Solr, vous devez d'abord créer une requête sélectionnée à l'aide de la fonction CreateSelect du client. Ensuite, vous pouvez définir les paramètres de démarrage et de lignes sur la requête pour spécifier la plage de résultats à retourner. Le paramètre de démarrage spécifie l'index du premier résultat à retourner et le paramètre des lignes spécifie le nombre de résultats à retourner. Une fois la pagination configurée, vous pouvez exécuter la requête à l'aide de la fonction d'exécution du client, qui renverra un ensemble de résultats qui inclut la plage de résultats spécifiée.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds











Dans PHP, Password_Hash et Password_verify Les fonctions doivent être utilisées pour implémenter le hachage de mot de passe sécurisé, et MD5 ou SHA1 ne doit pas être utilisé. 1) Password_hash génère un hachage contenant des valeurs de sel pour améliorer la sécurité. 2) Password_verify Vérifiez le mot de passe et assurez-vous la sécurité en comparant les valeurs de hachage. 3) MD5 et SHA1 sont vulnérables et manquent de valeurs de sel, et ne conviennent pas à la sécurité de mot de passe moderne.

PHP et Python ont chacun leurs propres avantages et choisissent en fonction des exigences du projet. 1.Php convient au développement Web, en particulier pour le développement rapide et la maintenance des sites Web. 2. Python convient à la science des données, à l'apprentissage automatique et à l'intelligence artificielle, avec syntaxe concise et adaptée aux débutants.

PHP est largement utilisé dans le commerce électronique, les systèmes de gestion de contenu et le développement d'API. 1) E-commerce: Utilisé pour la fonction de panier et le traitement des paiements. 2) Système de gestion du contenu: utilisé pour la génération de contenu dynamique et la gestion des utilisateurs. 3) Développement des API: Utilisé pour le développement de l'API RESTful et la sécurité de l'API. Grâce à l'optimisation des performances et aux meilleures pratiques, l'efficacité et la maintenabilité des applications PHP sont améliorées.

Le type PHP invite à améliorer la qualité et la lisibilité du code. 1) Conseils de type scalaire: Depuis PHP7.0, les types de données de base sont autorisés à être spécifiés dans les paramètres de fonction, tels que INT, Float, etc. 2) Invite de type de retour: Assurez la cohérence du type de valeur de retour de fonction. 3) Invite de type d'union: Depuis PHP8.0, plusieurs types peuvent être spécifiés dans les paramètres de fonction ou les valeurs de retour. 4) Invite de type nullable: permet d'inclure des valeurs nulles et de gérer les fonctions qui peuvent renvoyer les valeurs nulles.

PHP est toujours dynamique et occupe toujours une position importante dans le domaine de la programmation moderne. 1) La simplicité de PHP et le soutien communautaire puissant le rendent largement utilisé dans le développement Web; 2) sa flexibilité et sa stabilité le rendent exceptionnelle dans la gestion des formulaires Web, des opérations de base de données et du traitement de fichiers; 3) PHP évolue et optimise constamment, adapté aux débutants et aux développeurs expérimentés.

PHP est principalement la programmation procédurale, mais prend également en charge la programmation orientée objet (POO); Python prend en charge une variété de paradigmes, y compris la POO, la programmation fonctionnelle et procédurale. PHP convient au développement Web, et Python convient à une variété d'applications telles que l'analyse des données et l'apprentissage automatique.

L'utilisation de déclarations de prétraitement et l'APD dans PHP peut effectivement empêcher les attaques d'injection SQL. 1) Utilisez PDO pour vous connecter à la base de données et définir le mode d'erreur. 2) Créez des instructions de prétraitement via la méthode de préparation et transmettez des données à l'aide des espaces réservés et exécutez des méthodes. 3) Traitez les résultats de la requête et assurez la sécurité et les performances du code.

PHP et Python ont leurs propres avantages et inconvénients, et le choix dépend des besoins du projet et des préférences personnelles. 1.Php convient au développement rapide et à la maintenance des applications Web à grande échelle. 2. Python domine le domaine de la science des données et de l'apprentissage automatique.
