ホームページ  >  記事  >  バックエンド開発  >  PHPとcoreseekをベースにしたニュースレコメンデーションエンジンを構築

PHPとcoreseekをベースにしたニュースレコメンデーションエンジンを構築

PHPz
PHPzオリジナル
2023-08-05 09:13:481121ブラウズ

PHP と coreseek をベースにしたニュース レコメンデーション エンジンの構築

はじめに:
インターネットの急速な発展に伴い、人々が日常的に情報を入手する方法も変化しています。ユーザーが自分の興味に合ったニュース コンテンツを迅速かつ正確にフィルタリングできるようにする方法が重要な課題となっています。この記事では、PHP と coreseek を使用して、キーワード マッチングに基づくニュース レコメンデーション エンジンを構築する方法を紹介します。

  1. エンジン アーキテクチャ

ニュース レコメンデーション エンジンのアーキテクチャを次の図に示します:

ユーザー--> レコメンデーション エンジン--> ; coreseek -- > ニュース データベース

ユーザーは、レコメンデーション エンジンを通じてニュース キーワードを送信します。レコメンデーション エンジンは、キーワードを coreseek に渡します。Coreseek は、インデックス データベースを通じて一致するニュースをクエリし、レコメンデーション エンジンに返します。レコメンデーション エンジンは、返されたニュース リストを並べ替えてフィルタリングし、結果をユーザーに返します。

  1. coreseek のインストールと構成

まず、coreseek をインストールして構成する必要があります。 coreseek は、オープン ソースの検索エンジン Sphinx をベースにした中国語の全文インデックス作成ツールで、高速なテキスト検索に使用できます。 Linux 環境では、次のコマンドを使用して coreseek をインストールできます。

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

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'] を通じて一致するニュース ID リストを取得し、PDO クラスを使用して MySQL と対話し、対応するニュースをクエリします。 ID とコンテンツに基づいたタイトル。

  1. 結論

上記の手順により、PHP と coreseek に基づいたニュース推奨エンジンを構築することに成功しました。ユーザーログインやパーソナライズされたレコメンドなどの機能追加など、お客様のご要望に応じた二次開発が可能です。この記事がニュース レコメンデーション エンジンの構築に役立つことを願っています。

以上がPHPとcoreseekをベースにしたニュースレコメンデーションエンジンを構築の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。