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

WBOY
Libérer: 2023-10-03 09:16:02
original
796 Les gens l'ont consulté

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!

source:php.cn
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal