Rumah > Artikel > pembangunan bahagian belakang > Bina enjin cadangan berita berdasarkan PHP dan coreseek
Membina enjin cadangan berita berdasarkan PHP dan coreseek
Pengenalan:
Dengan perkembangan pesat Internet, cara orang ramai mendapatkan maklumat setiap hari juga berubah. Cara cepat dan tepat membantu pengguna menapis kandungan berita yang sepadan dengan minat mereka telah menjadi cabaran penting. Dalam artikel ini, kami akan memperkenalkan cara menggunakan PHP dan coreseek untuk membina enjin cadangan berita berdasarkan padanan kata kunci.
Seni bina enjin pengesyoran berita ditunjukkan dalam rajah di bawah:
Pengguna--> coreseek --> pangkalan data berita
dan pengesyoranmelalui enjin pengesyoran Enjin akan menghantar kata kunci kepada coreseek, dan coreseek akan menanyakan berita yang sepadan melalui perpustakaan indeks dan mengembalikannya kepada enjin pengesyoran. Enjin pengesyoran mengisih dan menapis senarai berita yang dikembalikan dan mengembalikan hasilnya kepada pengguna.
Mula-mula, kita perlu memasang dan mengkonfigurasi coreseek. coreseek ialah alat pengindeksan teks penuh Cina berdasarkan enjin carian sumber terbuka Sphinx, yang boleh digunakan untuk mendapatkan semula teks pantas. Dalam persekitaran Linux, kami boleh memasang coreseek melalui arahan berikut:
wget http://www.coreseek.cn/uploads/csft/4.1/coreseek-4.1-beta.tar.gz tar -zxvf coreseek-4.1-beta.tar.gz cd coreseek-4.1-beta ./configure --prefix=/usr/local/coreseek make && make install cd /usr/local/coreseek cp -r /usr/local/coreseek/mmseg-3.2.14/etc/* ./etc/ vi etc/csft.conf
Dalam fail konfigurasi csft.conf
, kami perlu menetapkan maklumat sambungan pangkalan data berita, seperti nama hos, port nombor, dsb. csft.conf
配置文件中,我们需要设置新闻数据库的连接信息,如主机名、端口号等。
接下来,我们需要创建一个新闻数据库,并导入新闻数据。假设我们使用MySQL作为数据库管理系统,可以通过以下命令创建数据库和表:
CREATE DATABASE news; USE news; CREATE TABLE news ( id INT PRIMARY KEY AUTO_INCREMENT, title VARCHAR(255), content TEXT );
然后,将新闻数据导入数据库:
INSERT INTO news (title, content) VALUES ('新闻标题1', '新闻内容1'); INSERT INTO news (title, content) VALUES ('新闻标题2', '新闻内容2'); ...
将所有新闻数据导入数据库之后,我们需要设置coreseek的索引配置文件etc/sphinx.conf
:
source news { type = mysql sql_host = localhost sql_user = your_mysql_user sql_pass = your_mysql_password sql_db = news sql_port = 3306 sql_query = SELECT id, title, content FROM news } index news_index { source = news path = /usr/local/coreseek/var/data/news_index docinfo = extern mlock = 0 }
以下是一个简单的PHP代码示例,用于提交用户关键词并获取新闻推荐结果:
<?php $keyword = $_GET['keyword']; $sphinx = new SphinxClient(); $sphinx->SetServer('localhost', 9312); $sphinx->SetMatchMode(SPH_MATCH_ALL); $sphinx->SetLimits(0, 10); $result = $sphinx->Query($keyword, 'news_index'); if ($result === false) { echo "查询失败"; } else { $ids = array_keys($result['matches']); $news = []; $pdo = new PDO('mysql:host=localhost;dbname=news', 'your_mysql_user', 'your_mysql_password'); $stmt = $pdo->prepare("SELECT title, content FROM news WHERE id IN (" . implode(',', $ids) . ")"); $stmt->execute(); while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { $news[] = $row; } echo json_encode($news); } ?>
在这个示例中,我们使用了sphinxapi扩展库提供的SphinxClient类来与coreseek进行查询。首先,我们通过SetServer
方法设置coreseek的主机名和端口号,然后使用SetMatchMode
方法设置匹配模式(这里是全部匹配),最后通过Query
方法提交用户关键词进行查询。
如果查询成功,我们可以通过$result['matches']
Kemudian, import data berita ke dalam pangkalan data:
rrreee🎜 Selepas mengimport semua data berita ke dalam pangkalan data, kami perlu menetapkan fail konfigurasi indeks coreseeketc/sphinx.conf
:🎜rrreeeSetServer
, kemudian gunakan kaedah SetMatchMode
untuk menetapkan mod padanan (di sini adalah semua padanan), dan akhirnya gunakan kaedah Query
The code> menyerahkan kata kunci pengguna untuk pertanyaan. 🎜🎜Jika pertanyaan berjaya, kami boleh mendapatkan senarai ID berita yang sepadan melalui $result['matches']
, dan kemudian gunakan kelas PDO untuk berinteraksi dengan MySQL untuk menanyakan tajuk berita dan kandungan yang sepadan berdasarkan ID. 🎜🎜🎜Kesimpulan🎜🎜🎜Melalui langkah di atas, kami berjaya membina enjin cadangan berita berdasarkan PHP dan coreseek. Anda boleh melakukan pembangunan sekunder mengikut keperluan anda sendiri, seperti menambah fungsi seperti log masuk pengguna dan cadangan diperibadikan. Saya harap artikel ini membantu anda membina enjin cadangan berita! 🎜Atas ialah kandungan terperinci Bina enjin cadangan berita berdasarkan PHP dan coreseek. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!