Maison  >  Article  >  développement back-end  >  Cas pratiques et applications de projets de Sphinx PHP

Cas pratiques et applications de projets de Sphinx PHP

WBOY
WBOYoriginal
2023-10-03 08:07:50708parcourir

Sphinx PHP 的实际案例与项目应用

Cas pratiques et applications de projets de Sphinx PHP

Introduction :
À l'ère d'Internet d'aujourd'hui, avec la croissance explosive du volume d'informations et la diversification des besoins des utilisateurs, les moteurs de recherche sont devenus l'un des principaux moyens pour nous d'obtenir le informations dont nous avons besoin. Pour répondre à ce besoin, le moteur de recherche en texte intégral Sphinx a vu le jour. Utiliser Sphinx en combinaison avec le langage PHP est également devenu le choix de nombreux projets.

Cet article prendra des cas spécifiques et des applications de projets comme exemples pour présenter l'application de Sphinx PHP dans des projets réels. Quelques exemples de code seront également fournis pour que les lecteurs puissent mieux comprendre.

1. Cas 1 : Fonction de recherche d'articles

Supposons que nous ayons un site Web d'actualités et que nous devions fournir une fonction de recherche d'articles efficace afin que les utilisateurs puissent trouver rapidement des articles qui les intéressent. Dans ce cas, nous utiliserons Sphinx PHP pour l’implémentation.

  1. Tout d'abord, nous devons installer Sphinx, cela peut être fait en exécutant la commande sudo apt-get install sphinxsearch dans le terminal. sudo apt-get install sphinxsearch 来完成。
  2. 接下来,在搜索引擎配置文件中设置索引。我们可以创建一个名为 news.conf 的文件,并写入以下内容:
source news
{
    type            = mysql
    sql_host        = localhost
    sql_user        = username
    sql_pass        = password
    sql_db            = database
    sql_port        = 3306
    sql_query        = 
        SELECT article_id, article_title, article_content 
        FROM articles
    sql_attr_timestamp    = article_publish_time
}

index news_index
{
    source            = news
    path            = /var/lib/sphinxsearch/data/news
    docinfo        = extern
    mlock            = 0
    mlock_recs        = 0
    index_exact_words    = 1
    min_word_len        = 3
    charset_table        = 0..9, A..Z->a..z, _, a..z, U+410..U+42F->U+430..U+44F, U+430..U+44F
    morphology        = stem_en
}

searchd
{
    listen            = 9312
    listen            = 9306:mysql41
    log            = /var/log/sphinxsearch/searchd.log
    query_log        = /var/log/sphinxsearch/query.log
    read_timeout        = 5
    max_children        = 30
    pid_file        = /var/run/sphinxsearch/searchd.pid
    seamless_rotate        = 1
    preopen_indexes        = 1
    unlink_old        = 1
    workers            = threads
    binlog_path        = /var/lib/sphinxsearch/data
}

在上述配置文件中,我们定义了一个数据源 news ,指定了连接数据库的相关信息以及需要索引的字段。然后,我们定义了一个名为 news_index 的索引,指定了索引文件的路径以及其他相关配置。

  1. 在代码中使用Sphinx PHP。我们可以使用Sphinx PHP的API来与Sphinx进行交互。以下是一个简单的示例代码:
<?php

require_once('sphinxapi.php');
$sphinx = new SphinxClient();
$sphinx->SetServer("localhost", 9312);

$keyword = $_GET['keyword']; // 从用户输入中获取关键词

$result = $sphinx->Query($keyword, 'news_index'); // 在索引中搜索关键词

if ($result && $result['total']) {
    foreach ($result['matches'] as $match) {
        echo "文章标题:" . $match['attrs']['article_title'] . "<br>";
        echo "文章内容:" . $match['attrs']['article_content'] . "<br><br>";
    }
} else {
    echo "没有找到相关文章";
}

?>

上述代码中,我们首先创建了一个SphinxClient对象,并设置连接服务器的相关信息。然后,我们从用户输入中获取关键词,并使用Sphinx的Query方法在索引中搜索相关文章。最后,我们从搜索结果中取出文章的标题和内容,并进行展示。

以上就是一个简单的使用Sphinx PHP实现文章搜索功能的案例。通过这种方式,我们可以快速地从大量文章中找到所需的内容。

二、案例二:商品全文搜索

在电商网站中,商品的全文搜索功能是必不可少的。在这个案例中,我们将使用Sphinx PHP来实现一个实时的商品搜索功能。

  1. 还是先安装Sphinx,同样使用命令 sudo apt-get install sphinxsearch 进行安装。
  2. 在搜索引擎配置文件中设置索引。我们可以创建一个名为 products.conf 的文件,并写入以下内容:
source products
{
    type            = mysql
    sql_host        = localhost
    sql_user        = username
    sql_pass        = password
    sql_db            = database
    sql_port        = 3306
    sql_query        = SELECT product_id, product_name, product_description FROM products
    sql_attr_uint    = product_price
}

index products_index
{
    source            = products
    path            = /var/lib/sphinxsearch/data/products
    docinfo        = extern
    mlock            = 0
    morphology        = stem_en
}

searchd
{
    listen            = 9312
    listen            = 9306:mysql41
    log            = /var/log/sphinxsearch/searchd.log
    query_log        = /var/log/sphinxsearch/query.log
    read_timeout        = 5
    max_children        = 30
    pid_file        = /var/run/sphinxsearch/searchd.pid
    seamless_rotate        = 1
    preopen_indexes        = 1
    unlink_old        = 1
    workers            = threads
    binlog_path        = /var/lib/sphinxsearch/data
}

在上述配置文件中,我们定义了一个数据源 products ,指定了连接数据库的相关信息以及需要索引的字段。然后,我们定义了一个名为 products_index

Ensuite, configurez l'indexation dans le fichier de configuration du moteur de recherche. Nous pouvons créer un fichier nommé news.conf et écrire le contenu suivant :
  1. <?php
    
    require_once('sphinxapi.php');
    $sphinx = new SphinxClient();
    $sphinx->SetServer("localhost", 9312);
    
    $keyword = $_GET['keyword']; // 从用户输入中获取关键词
    
    $result = $sphinx->Query($keyword, 'products_index'); // 在索引中搜索关键词
    
    if ($result && $result['total']) {
        foreach ($result['matches'] as $match) {
            echo "商品名称:" . $match['attrs']['product_name'] . "<br>";
            echo "商品描述:" . $match['attrs']['product_description'] . "<br>";
            echo "商品价格:" . $match['attrs']['product_price'] . "<br><br>";
        }
    } else {
        echo "没有找到相关商品";
    }
    
    ?>
  2. Dans le fichier de configuration ci-dessus, nous définissons une source de données news, précise les informations pertinentes pour la connexion à la base de données et aux champs à indexer. Ensuite, nous définissons un index nommé news_index, spécifiant le chemin d'accès au fichier d'index et d'autres configurations associées.

Utilisez Sphinx PHP dans votre code. Nous pouvons utiliser l'API de Sphinx PHP pour interagir avec Sphinx. Voici un exemple de code simple :


rrreee

Dans le code ci-dessus, nous créons d'abord un objet SphinxClient et définissons les informations pertinentes pour nous connecter au serveur. Nous obtenons ensuite les mots-clés de la saisie de l'utilisateur et utilisons la méthode Query de Sphinx pour rechercher dans l'index les articles pertinents. Enfin, nous récupérons le titre et le contenu de l’article dans les résultats de recherche et les affichons.

Ce qui précède est un cas simple d'utilisation de Sphinx PHP pour implémenter la fonction de recherche d'articles. De cette façon, nous pouvons trouver rapidement ce dont nous avons besoin parmi un grand nombre d’articles. 🎜🎜2. Cas 2 : Recherche en texte intégral de produits🎜🎜Dans les sites e-commerce, la fonction de recherche en texte intégral de produits est essentielle. Dans ce cas, nous utiliserons Sphinx PHP pour implémenter une fonction de recherche de produits en temps réel. 🎜🎜🎜 Installons d'abord Sphinx. Utilisez également la commande sudo apt-get install sphinxsearch pour l'installer. 🎜🎜Définissez l'indexation dans les fichiers de configuration du moteur de recherche. Nous pouvons créer un fichier nommé products.conf et écrire le contenu suivant : 🎜🎜rrreee🎜Dans le fichier de configuration ci-dessus, nous définissons une source de données products, précise les informations pertinentes pour la connexion à la base de données et aux champs à indexer. Ensuite, nous définissons un index nommé products_index, spécifiant le chemin d'accès au fichier d'index et à toute autre configuration associée. 🎜🎜🎜Utilisez Sphinx PHP dans votre code. Voici un exemple de code simple : 🎜🎜rrreee🎜Le code ci-dessus est similaire à la fonction de recherche d'articles, sauf que les noms de champs sont différents. Nous pouvons également rechercher des produits associés dans l'index en fonction des mots-clés saisis par l'utilisateur et afficher les résultats de la recherche. 🎜🎜Conclusion : 🎜Grâce à l'introduction des cas ci-dessus, nous pouvons voir l'application de Sphinx PHP dans des projets réels. En combinant le langage PHP et le moteur de recherche plein texte Sphinx, nous pouvons obtenir des fonctions efficaces de recherche d'articles et de recherche de produits. Qu’il s’agisse d’un site d’actualité ou d’un site e-commerce, vous pouvez en bénéficier. 🎜🎜Bien sûr, Sphinx possède de nombreuses autres fonctions et scénarios d'application, tels que le tri, la pagination, le filtrage, etc. J'espère que les exemples de cet article pourront inspirer les lecteurs et inspirer plus de créativité et d'idées. 🎜

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