Rumah >pembangunan bahagian belakang >tutorial php >Kes praktikal dan aplikasi projek Sphinx PHP
Kes praktikal dan aplikasi projek Sphinx PHP
Pengenalan:
Dalam era Internet hari ini, dengan pertumbuhan pesat jumlah maklumat dan kepelbagaian keperluan pengguna, enjin carian telah menjadi salah satu cara utama untuk kami memperoleh maklumat yang kita perlukan. Untuk memenuhi keperluan ini, enjin carian teks penuh Sphinx telah wujud. Menggunakan Sphinx dalam kombinasi dengan bahasa PHP juga telah menjadi pilihan banyak projek.
Artikel ini akan mengambil kes tertentu dan aplikasi projek sebagai contoh untuk memperkenalkan aplikasi Sphinx PHP dalam projek sebenar. Beberapa contoh kod juga akan disediakan untuk pembaca memahami dengan lebih baik.
1. Kes 1: Fungsi Carian Artikel
Katakan kita mempunyai laman web berita dan perlu menyediakan fungsi carian artikel yang cekap supaya pengguna dapat mencari artikel yang menarik. Dalam kes ini, kami akan menggunakan Sphinx PHP untuk pelaksanaan.
sudo apt-get install sphinxsearch
dalam 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
dan menulis kandungan berikut: <?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
, Menentukan maklumat yang berkaitan untuk menyambung ke pangkalan data dan medan yang perlu diindeks. Kemudian, kami mentakrifkan indeks bernama news_index
, menyatakan laluan ke fail indeks dan konfigurasi lain yang berkaitan.
rrreee
sudo apt-get install sphinxsearch
untuk memasangnya. 🎜🎜Tetapkan pengindeksan dalam fail konfigurasi enjin carian. Kami boleh mencipta fail bernama products.conf
dan menulis kandungan berikut: 🎜🎜rrreee🎜Dalam fail konfigurasi di atas, kami mentakrifkan sumber data products_index
, yang menyatakan laluan ke fail indeks dan konfigurasi lain yang berkaitan. 🎜🎜🎜Gunakan Sphinx PHP dalam kod anda. Berikut ialah contoh kod mudah: 🎜🎜rrreee🎜Kod di atas adalah serupa dengan fungsi carian artikel, kecuali nama medan adalah berbeza. Kita juga boleh mencari produk berkaitan dalam indeks berdasarkan kata kunci yang dimasukkan oleh pengguna dan memaparkan hasil carian. 🎜🎜Kesimpulan: 🎜Melalui pengenalan kes di atas, kita dapat melihat aplikasi Sphinx PHP dalam projek sebenar. Dengan menggabungkan bahasa PHP dan enjin carian teks penuh Sphinx, kami boleh mencapai carian artikel dan fungsi carian produk yang cekap. Sama ada laman web berita atau laman web e-dagang, anda boleh mendapat manfaat daripadanya. 🎜🎜Sudah tentu, Sphinx mempunyai banyak fungsi dan senario aplikasi lain, seperti pengisihan, paging, penapisan, dll. Saya harap contoh-contoh dalam artikel ini boleh membawa sedikit inspirasi kepada pembaca dan memberi inspirasi kepada lebih banyak kreativiti dan idea. 🎜Atas ialah kandungan terperinci Kes praktikal dan aplikasi projek Sphinx PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!