Maison  >  Article  >  développement back-end  >  Créer un moteur de recommandation d'actualités basé sur PHP et coreseek

Créer un moteur de recommandation d'actualités basé sur PHP et coreseek

PHPz
PHPzoriginal
2023-08-05 09:13:481107parcourir

Création d'un moteur de recommandation d'actualités basé sur PHP et coreseek

Introduction :
Avec le développement rapide d'Internet, la façon dont les gens obtiennent des informations au quotidien évolue également. Comment aider rapidement et précisément les utilisateurs à filtrer le contenu d’actualité qui correspond à leurs intérêts est devenu un défi important. Dans cet article, nous présenterons comment utiliser PHP et coreseek pour créer un moteur de recommandation d'actualités basé sur la correspondance de mots clés.

  1. Architecture du moteur

L'architecture du moteur de recommandation d'actualités est présentée dans la figure ci-dessous :

Utilisateur--> Moteur de recommandation--> Base de données d'actualités

Les utilisateurs soumettent des mots-clés et des recommandations d'actualités. via le moteur de recommandation Le moteur transmettra les mots-clés à coreseek, et coreseek interrogera les actualités correspondantes via la bibliothèque d'index et les renverra au moteur de recommandation. Le moteur de recommandation trie et filtre la liste d'actualités renvoyée et renvoie les résultats à l'utilisateur.

  1. Installer et configurer coreseek

Tout d'abord, nous devons installer et configurer coreseek. coreseek est un outil chinois d'indexation de texte intégral basé sur le moteur de recherche open source Sphinx, qui peut être utilisé pour une récupération rapide de texte. Dans l'environnement Linux, nous pouvons installer coreseek via la commande suivante :

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

Dans le fichier de configuration csft.conf, nous devons définir les informations de connexion de la base de données d'actualités, telles que le nom d'hôte, le port. numéro, etc 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']

    Base de données et importation de données
    1. Ensuite, nous devons créer une base de données d'actualités et importer des données d'actualités. En supposant que nous utilisons MySQL comme système de gestion de base de données, nous pouvons créer la base de données et les tables via les commandes suivantes :
    rrreee

    Ensuite, importez les données d'actualité dans la base de données :

    rrreee🎜 Après avoir importé toutes les données d'actualité dans la base de données, nous devez définir le fichier de configuration d'index de coreseek etc/sphinx.conf:🎜rrreee
      🎜Exemple de code PHP🎜🎜🎜Ce qui suit est un exemple de code PHP simple pour soumettre l'utilisateur mots-clés et obtention des résultats de recommandation d'actualités :🎜 rrreee🎜Dans cet exemple, nous utilisons la classe SphinxClient fournie par la bibliothèque d'extensions sphinxapi pour interroger avec coreseek. Tout d'abord, nous définissons le nom d'hôte et le numéro de port de coreseek via la méthode SetServer, puis utilisons la méthode SetMatchMode pour définir le mode de correspondance (voici tout correspond), et enfin utilisez la méthode Query La méthode code> soumet les mots-clés utilisateur pour la requête. 🎜🎜Si la requête réussit, nous pouvons obtenir la liste d'ID d'actualités correspondante via $result['matches'], puis utiliser la classe PDO pour interagir avec MySQL afin d'interroger les titres et contenus d'actualités correspondants. en fonction de l'identifiant. 🎜🎜🎜Conclusion🎜🎜🎜Grâce aux étapes ci-dessus, nous avons réussi à créer un moteur de recommandation d'actualités basé sur PHP et coreseek. Vous pouvez effectuer un développement secondaire en fonction de vos propres besoins, comme l'ajout de fonctions telles que la connexion utilisateur et des recommandations personnalisées. J'espère que cet article vous aidera à créer un moteur de recommandation d'actualités ! 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn