Heim > Artikel > Backend-Entwicklung > Erstellen Sie eine Nachrichtenempfehlungs-Engine basierend auf PHP und Coreseek
Aufbau einer Nachrichtenempfehlungs-Engine auf Basis von PHP und Coreseek
Einführung:
Mit der rasanten Entwicklung des Internets verändert sich auch die Art und Weise, wie Menschen täglich Informationen erhalten. Es ist zu einer wichtigen Herausforderung geworden, Benutzern schnell und genau dabei zu helfen, Nachrichteninhalte herauszufiltern, die ihren Interessen entsprechen. In diesem Artikel stellen wir vor, wie man mit PHP und Coreseek eine Nachrichtenempfehlungs-Engine basierend auf Keyword-Matching erstellt.
Die Architektur der Nachrichtenempfehlungs-Engine ist in der folgenden Abbildung dargestellt:
Benutzer--> Empfehlungs-Engine--> Nachrichtendatenbank
Benutzer geben Nachrichtenschlüsselwörter und Empfehlungen ab über die Empfehlungs-Engine Die Engine übergibt die Schlüsselwörter an coreseek, und coreseek fragt die passenden Nachrichten über die Indexbibliothek ab und gibt sie an die Empfehlungs-Engine zurück. Die Empfehlungsmaschine sortiert und filtert die zurückgegebene Nachrichtenliste und gibt die Ergebnisse an den Benutzer zurück.
Zuerst müssen wir Coreseek installieren und konfigurieren. coreseek ist ein chinesisches Volltext-Indizierungstool, das auf der Open-Source-Suchmaschine Sphinx basiert und zum schnellen Auffinden von Texten verwendet werden kann. In der Linux-Umgebung können wir coreseek über den folgenden Befehl installieren:
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
In der Konfigurationsdatei csft.conf
müssen wir die Verbindungsinformationen der Nachrichtendatenbank festlegen, z. B. Hostname und Port Nummer usw. 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']
Dann importieren wir die Nachrichtendaten in die Datenbank:
rrreee🎜 Nachdem wir alle Nachrichtendaten in die Datenbank importiert haben, können wir Sie müssen die Indexkonfigurationsdatei von coreseeketc/sphinx.conf
:🎜rrreeeSetServer
fest, verwenden dann die Methode SetMatchMode
, um den Matching-Modus festzulegen (hier ist alles Matching) und schließlich Verwenden Sie die Query
-Methode. Die Code>-Methode übermittelt Benutzerschlüsselwörter zur Abfrage. 🎜🎜Wenn die Abfrage erfolgreich ist, können wir die passende Nachrichten-ID-Liste über $result['matches']
abrufen und dann die PDO-Klasse verwenden, um mit MySQL zu interagieren und die entsprechenden Nachrichtentitel und Inhalte abzufragen basierend auf der ID. 🎜🎜🎜Fazit🎜🎜🎜Durch die oben genannten Schritte haben wir erfolgreich eine Nachrichtenempfehlungs-Engine basierend auf PHP und Coreseek erstellt. Sie können eine sekundäre Entwicklung entsprechend Ihren eigenen Anforderungen durchführen, z. B. das Hinzufügen von Funktionen wie Benutzeranmeldung und personalisierten Empfehlungen. Ich hoffe, dieser Artikel hilft Ihnen beim Aufbau einer Nachrichtenempfehlungsmaschine! 🎜Das obige ist der detaillierte Inhalt vonErstellen Sie eine Nachrichtenempfehlungs-Engine basierend auf PHP und Coreseek. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!