Maison >développement back-end >tutoriel php >Cas pratiques et applications de projets de 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.
sudo apt-get install sphinxsearch
dans le terminal. sudo apt-get install sphinxsearch
来完成。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
的索引,指定了索引文件的路径以及其他相关配置。
<?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来实现一个实时的商品搜索功能。
sudo apt-get install sphinxsearch
进行安装。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
news.conf
et écrire le contenu suivant : <?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 "没有找到相关商品"; } ?>
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.
rrreee
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!