Maison > Article > développement back-end > Construire un moteur de recherche en utilisant PHP et Apache Solr
Avec la popularité d'Internet et des appareils mobiles, les moteurs de recherche sont devenus le premier choix des internautes pour obtenir des informations et trouver des réponses. Construire un moteur de recherche efficace et précis nécessite l’utilisation d’une variété de technologies et d’outils. Cet article explique comment utiliser PHP et Apache Solr pour créer un moteur de recherche.
1. Qu'est-ce qu'Apache Solr ?
Apache Solr est une plateforme de recherche open source basée sur Lucene, écrite en Java, qui fournit des fonctions de recherche et d'analyse de texte rapides, évolutives et efficaces. Solr peut stocker, indexer et rechercher du texte, XML, JSON et d'autres formats de données. Il prend en charge plusieurs langages de requête, tels que la syntaxe de requête Lucene, SQL, XPath, XSLT, etc.
2. Pourquoi choisir Apache Solr ?
Par rapport à d'autres logiciels de moteur de recherche, Solr présente les avantages suivants :
3. Comment utiliser Apache Solr ?
Vous devez d'abord télécharger la dernière version d'Apache Solr et la décompresser dans le répertoire approprié. Ensuite, suivez la documentation officielle (https://lucene.apache.org/solr/guide/8_6/) pour configurer et démarrer.
La fonction principale de Solr est d'indexer et de rechercher des données. L'indexation consiste à stocker des données sur le serveur Solr dans un certain emplacement. chemin. Solr prend en charge plusieurs formats de données, tels que JSON, XML, CSV, etc.
Ce qui suit utilise le format JSON comme exemple pour présenter comment créer un index :
Tout d'abord, vous devez définir un fichier schema.xml pour décrire la structure des données et l'index configuration. schema.xml contient le contenu suivant :
Par exemple :
<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" /> <field name="title" type="text_general" indexed="true" stored="true" multiValued="false" /> <field name="content" type="text_general" indexed="true" stored="true" multiValued="true" /> <copyField source="title" dest="text" /> <copyField source="content" dest="text" /> <uniqueKey>id</uniqueKey>
Ensuite, utilisez la commande curl pour importer les données dans Solr :
curl http://localhost:8983/solr/mycore/update -H “Content-Type:application/json" -d '[ { "id":"1", "title":"Solr是什么", "content":"Solr是一款开源搜索引擎" }, { "id":"2", "title":"Solr如何使用", "content":"可以使用Java或HTTP协议发送请求到Solr服务器" }, { "id":"3", "title":"Solr的优势是什么", "content":["高效性", "可扩展性", "易用性"] } ]’
La commande ci-dessus signifie que l'identifiant sera Les données de 1, 2 et 3 sont importées dans la bibliothèque d'index mycore.
Le langage de requête de Solr prend en charge une variété de méthodes de requête, telles que les requêtes génériques, les requêtes d'expression, les requêtes par plage, les requêtes booléennes, etc. Ce qui suit prend la requête HTTP comme exemple :
http://localhost:8983/solr/mycore/select?q=title:Solr&fq=content:开源&sort=id+desc&start=0&rows=10&fl=title,id
La requête ci-dessus signifie :
4. Comment utiliser PHP pour se connecter au serveur Solr ?
PHP fournit une extension curl, qui peut être utilisée pour envoyer des requêtes HTTP. Voici un exemple simple de connexion au serveur Solr :
<?php $url = 'http://localhost:8983/solr/mycore/select?q=title:Solr'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); curl_close($ch); echo $response; ?>
Le code ci-dessus signifie envoyer une requête de requête au serveur Solr, et le résultat renvoyé sera stocké dans la variable $response.
5. Comment utiliser PHP et Solr pour construire un moteur de recherche ?
Tout d'abord, vous devez importer les données à rechercher dans Solr. Vous pouvez utiliser la commande curl ou écrire du code dans Solr. PHP pour effectuer l'opération d'importation. Par exemple :
$ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'http://localhost:8983/solr/mycore/update?commitWithin=1000'); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type:application/json')); curl_setopt($ch, CURLOPT_POSTFIELDS, $json_data); $response = curl_exec($ch); curl_close($ch);
Le code ci-dessus indique d'utiliser PHP pour importer les données de $json_data dans une bibliothèque d'index nommée mycore et terminer l'opération de soumission en 1 seconde.
Utilisez PHP pour vous connecter au serveur Solr, appeler l'interface de requête et renvoyer les résultats de la requête. Par exemple :
$url = 'http://localhost:8983/solr/mycore/select?q='.$query.'&start='.($page-1)*$rows.'&rows='.$rows.'&wt=json&indent=true'; $response = file_get_contents($url);
Le code ci-dessus signifie définir une condition de requête $query Sur la page $page, chaque page affiche des éléments de données de $rows. Utilisez la fonction file_get_contents pour obtenir les résultats de la requête du serveur Solr.
Analyser les résultats de la requête dans un tableau PHP, puis effectuer la pagination, le tri, le filtrage et d'autres opérations selon les besoins, et enfin les données Il suffit de les afficher sur la page. Par exemple :
$data = json_decode($response, true); foreach ($data['response']['docs'] as $doc) { echo '<a href="'.$doc['url'].'">'.$doc['title'].'</a><br/>'; }
Le code ci-dessus représente le parcours des résultats de la requête et l'affichage du titre et du lien de chaque élément de données.
6. Résumé
Cet article présente comment utiliser PHP et Apache Solr pour créer un moteur de recherche. Grâce à une explication détaillée des fonctions de base de Solr, des méthodes d'utilisation et de la combinaison avec PHP, les lecteurs peuvent rapidement maîtriser l'utilisation de Solr et utiliser PHP pour écrire le code du moteur de recherche. Solr offre de puissantes capacités de recherche et d'analyse et est idéal pour créer différents types de moteurs de recherche.
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!