PHP と coreseek をベースにしたニュース レコメンデーション エンジンの構築
はじめに:
インターネットの急速な発展に伴い、人々が日常的に情報を入手する方法も変化しています。ユーザーが自分の興味に合ったニュース コンテンツを迅速かつ正確にフィルタリングできるようにする方法が重要な課題となっています。この記事では、PHP と coreseek を使用して、キーワード マッチングに基づくニュース レコメンデーション エンジンを構築する方法を紹介します。
ニュース レコメンデーション エンジンのアーキテクチャを次の図に示します:
ユーザー--> レコメンデーション エンジン--> ; coreseek -- > ニュース データベース
ユーザーは、レコメンデーション エンジンを通じてニュース キーワードを送信します。レコメンデーション エンジンは、キーワードを coreseek に渡します。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
構成ファイルで、ホストなどのニュース データベースの接続情報を設定する必要があります。名前、ポート番号など。
次に、ニュース データベースを作成し、ニュース データをインポートする必要があります。データベース管理システムとして 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']
を通じて一致するニュース ID リストを取得し、PDO クラスを使用して MySQL と対話し、対応するニュースをクエリします。 ID とコンテンツに基づいたタイトル。
上記の手順により、PHP と coreseek に基づいたニュース推奨エンジンを構築することに成功しました。ユーザーログインやパーソナライズされたレコメンドなどの機能追加など、お客様のご要望に応じた二次開発が可能です。この記事がニュース レコメンデーション エンジンの構築に役立つことを願っています。
以上がPHPとcoreseekをベースにしたニュースレコメンデーションエンジンを構築の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。