Maison développement back-end tutoriel php Sphinx écrit une analyse d'exemple de fonction de recherche efficace

Sphinx écrit une analyse d'exemple de fonction de recherche efficace

Oct 03, 2023 am 08:40 AM
编写 高效搜索 sphinx (moteur de recherche)

Sphinx 编写高效的搜索功能实例解析

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.

  1. Installer Sphinx
    Tout d'abord, nous devons installer Sphinx sur le serveur. Vous pouvez télécharger la dernière version du programme d'installation sur le site officiel de Sphinx (https://sphinxsearch.com/) et l'installer selon les instructions.
  2. 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
    }
    Copier après la connexion

    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
    Copier après la connexion
  3. É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.';
    }
    ?>
    Copier après la connexion

    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.

  4. 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!

Déclaration de ce site Web
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

Article chaud

Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Article chaud

Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Tags d'article chaud

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

Écrire une méthode pour calculer la fonction puissance en langage C Écrire une méthode pour calculer la fonction puissance en langage C Feb 19, 2024 pm 01:00 PM

Écrire une méthode pour calculer la fonction puissance en langage C

Comment écrire l'algorithme de filtre Bloom en utilisant C# Comment écrire l'algorithme de filtre Bloom en utilisant C# Sep 21, 2023 am 10:24 AM

Comment écrire l'algorithme de filtre Bloom en utilisant C#

Comment écrire un algorithme de programmation dynamique en utilisant C# Comment écrire un algorithme de programmation dynamique en utilisant C# Sep 20, 2023 pm 04:03 PM

Comment écrire un algorithme de programmation dynamique en utilisant C#

Comment écrire un système de réservation d'hôtel simple en C++ ? Comment écrire un système de réservation d'hôtel simple en C++ ? Nov 03, 2023 am 11:54 AM

Comment écrire un système de réservation d'hôtel simple en C++ ?

Comment écrire l'algorithme KNN en Python ? Comment écrire l'algorithme KNN en Python ? Sep 19, 2023 pm 01:18 PM

Comment écrire l'algorithme KNN en Python ?

Comment utiliser C++ pour écrire un système simple de sélection de cours pour les étudiants ? Comment utiliser C++ pour écrire un système simple de sélection de cours pour les étudiants ? Nov 02, 2023 am 10:54 AM

Comment utiliser C++ pour écrire un système simple de sélection de cours pour les étudiants ?

Le guide complet des cours de test en Java : tutoriel détaillé du débutant à la maîtrise Le guide complet des cours de test en Java : tutoriel détaillé du débutant à la maîtrise Jan 24, 2024 am 08:12 AM

Le guide complet des cours de test en Java : tutoriel détaillé du débutant à la maîtrise

Comment écrire un jeu simple de démineur en C++ ? Comment écrire un jeu simple de démineur en C++ ? Nov 02, 2023 am 11:24 AM

Comment écrire un jeu simple de démineur en C++ ?

See all articles