Sphinx PHP melaksanakan sejarah carian dan fungsi pengesyoran carian teks penuh
Pengenalan:
Dengan perkembangan pesat Internet, carian teks penuh telah menjadi ciri penting dalam banyak tapak web dan aplikasi. Sphinx ialah enjin carian teks penuh sumber terbuka yang berkuasa yang boleh mencari dan mendapatkan sejumlah besar data teks dengan cepat. Artikel ini akan memperkenalkan cara menggunakan Sphinx PHP untuk melaksanakan sejarah carian dan fungsi pengesyoran carian teks penuh untuk meningkatkan pengalaman carian pengguna.
1.1 Muat turun Sphinx
Lawati laman web rasmi Sphinx (http://sphinxsearch.com/) untuk memuat turun versi terkini Sphinx. Nyahzip fail.
1.2 Pasang Sphinx
Masukkan direktori penyahmampatan Sphinx dan laksanakan arahan berikut untuk memasang Sphinx:
./configure make make install
1.3 Konfigurasi Sphinx
Dalam direktori pemasangan Sphinx, buat fail konfigurasi berikut sphinx.conf
source src1 { type = mysql sql_host = your_mysql_host sql_user = your_mysql_user sql_pass = your_mysql_password sql_db = your_mysql_database sql_port = 3306 sql_query = SELECT id, title, content FROM articles } index idx1 { source = src1 path = /path/to/index docinfo = extern morphology = stem_ru min_stemming_len = 4 } searchd { listen = 9312 log = /path/to/log/searchd.log }
<?php require_once("sphinxapi.php"); // 定义Sphinx服务器的IP地址和端口号 $host = "127.0.0.1"; $port = 9312; // 创建Sphinx客户端对象 $sphinx = new SphinxClient(); // 设置Sphinx服务器的连接信息 $sphinx->SetServer($host, $port); // 设置搜索模式为全文搜索模式 $sphinx->SetMatchMode(SPH_MATCH_EXTENDED2); // 定义关键词 $keyword = "php实现搜索"; // 执行搜索 $result = $sphinx->Query($keyword, "idx1"); if ($result["total"] > 0) { // 获取搜索结果 $matches = $result["matches"]; // 输出搜索结果 foreach ($matches as $match) { echo "文章标题:" . $match["attrs"]["title"] . "<br>"; echo "文章内容:" . $match["attrs"]["content"] . "<br>"; echo "<br>"; } } else { echo "没有找到相关的文章"; } ?>
Buat jadual sejarah carian dalam pangkalan data, yang mengandungi medan berikut:
Selepas melakukan carian, masukkan kata kunci carian pengguna dan masa semasa ke dalam jadual sejarah carian. Kod sampel adalah seperti berikut:
<?php // ... if ($result["total"] > 0) { // ... // 将搜索关键词插入到搜索历史记录表中 $user_id = 1; // 假设用户ID为1 $keyword = "php实现搜索"; $created_at = date("Y-m-d H:i:s"); $sql = "INSERT INTO search_history (user_id, keyword, created_at) VALUES ('$user_id', '$keyword', '$created_at')"; // 执行SQL语句插入搜索历史记录 // ... // 输出搜索结果 // ... }
Tanya sejarah carian pengguna dalam pangkalan data dan simpannya ke tatasusunan. Kod sampel adalah seperti berikut:
<?php // ... $user_id = 1; // 假设用户ID为1 // 查询用户的搜索历史记录 $sql = "SELECT keyword FROM search_history WHERE user_id = '$user_id' ORDER BY created_at DESC LIMIT 5"; // 执行SQL语句查询搜索历史记录 // ... // 将搜索关键词保存到数组中 $keywords = []; while ($row = mysqli_fetch_assoc($result)) { $keywords[] = $row["keyword"]; }
Berdasarkan sejarah carian pengguna, artikel yang berkaitan boleh ditanya daripada pangkalan data dan keputusan yang disyorkan boleh dikeluarkan. Kod sampel adalah seperti berikut:
<?php // ... if (count($keywords) > 0) { $sql = "SELECT title, content FROM articles WHERE "; foreach ($keywords as $keyword) { $sql .= "MATCH('$keyword') "; $sql .= "OPTION ranker=expr('sum(word_count)*user_weight') "; $sql .= "AGAINST('$keyword') OR "; } $sql = rtrim($sql, " OR "); $sql .= " LIMIT 5"; // 执行SQL语句查询推荐结果 // ... if (mysqli_num_rows($result) > 0) { // 输出推荐结果 while ($row = mysqli_fetch_assoc($result)) { echo "文章标题:" . $row["title"] . "<br>"; echo "文章内容:" . $row["content"] . "<br>"; echo "<br>"; } } else { echo "没有推荐的文章"; } }
Artikel ini memperkenalkan cara menggunakan Sphinx PHP untuk melaksanakan sejarah carian dan fungsi pengesyoran carian teks penuh. Dengan menyimpan kata kunci carian pengguna dan artikel berkaitan pertanyaan, pengalaman carian pengguna boleh dipertingkatkan dan hasil pengesyoran yang lebih diperibadikan boleh disediakan untuk pengguna. Saya harap pembaca dapat melaksanakan fungsi yang sepadan dengan jayanya berdasarkan kaedah dan kod sampel yang disediakan dalam artikel ini.
Atas ialah kandungan terperinci Sphinx PHP melaksanakan sejarah carian dan fungsi cadangan untuk carian teks penuh. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!