Sphinx est un moteur de recherche en texte intégral open source qui peut gérer efficacement les besoins de recherche de texte à grande échelle. Cet article utilisera un exemple pour analyser comment utiliser Sphinx pour écrire des fonctions de recherche efficaces et fournira des exemples de code spécifiques.
Créer un index
Avant de commencer à écrire la fonction de recherche, nous devons d'abord créer un index pour stocker les données textuelles qui doivent être recherchées. Supposons que notre application doive rechercher des informations sur certains produits. Chaque produit contient des attributs tels que le titre, la description et le prix. Nous pouvons créer un index appelé « produits ».
Tout d'abord, créez une base de données MySQL connectée à Sphinx et importez les données produits. Supposons que nous ayons une base de données appelée « produits » et qu'elle contienne une table appelée « product_info » qui contient des champs tels que le titre, la description et le prix du produit.
Ensuite, nous devons créer un fichier de configuration adapté à l'index "produits". Créez un fichier nommé "products.conf" et ajoutez le contenu suivant :
source products { type = mysql sql_host = localhost sql_user = username sql_pass = password sql_db = products sql_port = 3306 sql_query = SELECT id, title, description, price FROM product_info sql_attr_uint = price } index products { source = products path = /path/to/index/products charset_type = utf-8 }
Ceci spécifie les informations de connexion et l'instruction de requête pour la base de données MySQL. "sql_attr_uint = price" indique que le champ price est un attribut de type entier non signé.
Enfin, utilisez la commande suivante pour créer l'index :
$ indexer --config /path/to/products.conf --all
Écriture de la fonction de recherche
Maintenant, nous pouvons commencer à écrire la fonction de recherche de Sphinx. Voici un exemple PHP simple :
<?php require('sphinxapi.php'); $sphinx = new SphinxClient(); $sphinx->setServer('localhost', 9312); $keyword = $_GET['keyword']; $sphinx->setMatchMode(SPH_MATCH_ANY); $sphinx->setSortMode(SPH_SORT_RELEVANCE); $result = $sphinx->query($keyword, 'products'); if ($result['total'] > 0) { foreach ($result['matches'] as $match) { echo 'ID: ' . $match['id'] . '<br>'; echo 'Title: ' . $match['attrs']['title'] . '<br>'; echo 'Description: ' . $match['attrs']['description'] . '<br>'; echo 'Price: ' . $match['attrs']['price'] . '<br><br>'; } } else { echo 'No results found.'; } ?>
Ce code crée d'abord un objet SphinxClient et spécifie l'adresse et le numéro de port du serveur Sphinx. Ensuite, recevez les mots-clés saisis par l'utilisateur et définissez le mode de correspondance et le mode de tri.
Enfin, appelez la méthode query() pour effectuer la recherche et parcourez les résultats pour imprimer les informations sur le produit correspondant.
Exécutez le test
Enregistrez le code ci-dessus sous forme de fichier PHP (par exemple search.php) et déployez-le sur votre serveur Web. Vous pouvez ensuite effectuer une recherche en accédant à search.php?keyword=keyword.
Par exemple, visiter http://yourdomain.com/search.php?keyword=mobile phone recherchera les produits contenant le mot-clé « téléphone mobile » et affichera les résultats sur la page.
Grâce aux étapes ci-dessus, nous avons implémenté une fonction de recherche efficace basée sur Sphinx. Sphinx offre une multitude d'options de configuration et de syntaxe de requête pour optimiser les performances de recherche en fonction des besoins réels. Nous espérons que les exemples de code fournis dans cet article pourront aider les lecteurs à comprendre et à utiliser Sphinx pour écrire des fonctions de recherche efficaces.
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!