Heim >Backend-Entwicklung >PHP-Tutorial >Erstellen Sie eine Nachrichtenempfehlungs-Engine basierend auf PHP und Coreseek

Erstellen Sie eine Nachrichtenempfehlungs-Engine basierend auf PHP und Coreseek

PHPz
PHPzOriginal
2023-08-05 09:13:481151Durchsuche

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.

  1. Engine-Architektur

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.

  1. Coreseek installieren und konfigurieren

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配置文件中,我们需要设置新闻数据库的连接信息,如主机名、端口号等。

  1. 数据库和数据导入

接下来,我们需要创建一个新闻数据库,并导入新闻数据。假设我们使用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
}
  1. PHP代码示例

以下是一个简单的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']

    Datenbank und Datenimport
    1. Als nächstes müssen wir eine Nachrichtendatenbank erstellen und Nachrichtendaten importieren. Unter der Annahme, dass wir MySQL als Datenbankverwaltungssystem verwenden, können wir die Datenbank und Tabellen mit den folgenden Befehlen erstellen:
    rrreee

    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 coreseek etc/sphinx.conf:🎜rrreee
      🎜PHP-Codebeispiel🎜🎜🎜Das Folgende ist ein einfaches PHP-Codebeispiel für die Übermittlung von Benutzern Schlüsselwörter und Erhalten von Nachrichtenempfehlungsergebnissen:🎜 rrreee🎜In diesem Beispiel verwenden wir die SphinxClient-Klasse, die von der Sphinxapi-Erweiterungsbibliothek bereitgestellt wird, um Abfragen mit coreseek durchzuführen. Zuerst legen wir den Hostnamen und die Portnummer von Coreseek über die Methode SetServer 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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

In Verbindung stehende Artikel

Mehr sehen