Maison  >  Article  >  développement back-end  >  Construire un moteur de recherche en utilisant PHP et Apache Solr

Construire un moteur de recherche en utilisant PHP et Apache Solr

王林
王林original
2023-06-25 08:28:031294parcourir

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 :

  1. Efficacité : Solr peut gérer de grandes quantités de données et peut localiser rapidement les besoins lors de l'interrogation information.
  2. Évolutivité : Solr peut être étendu à des centaines de serveurs et prend en charge l'expansion horizontale.
  3. Facilité d'utilisation : Solr prend en charge plusieurs langages de requête et formats de données, et la configuration et le déploiement sont relativement simples.

3. Comment utiliser Apache Solr ?

  1. Installer 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.

  1. Create Index

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 :

  1. field : définit le champ d'index et le type de données.
  2. copyField : Définit les règles de copie d'un champ à un autre.
  3. uniqueKey : Définit l'identifiant unique du document indexé.

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.

  1. Données de requête

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 :

  1. Condition de requête : le titre est Solr.
  2. Condition du filtre : le contenu contient du "open source".
  3. Trier : Trier par identifiant par ordre décroissant.
  4. Paging : A partir du 0ème enregistrement, prenez 10 enregistrements.
  5. Champs de retour : Seuls les champs titre et identifiant sont renvoyés.

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 ?

  1. Build index

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.

  1. Requête de données

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.

  1. Afficher les données

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn