>本教程演示了使用預測和管腔構建電影推薦應用程序。 我們將介紹數據導入,隨機的電影選擇,推薦生成和引擎部署。
>
密鑰概念:
.env
>Pio
>記住用您的實際鍵代替佔位符。
.env
數據導入(tmdb to predictionio&Elasticsearch):
<code>APP_ENV=local APP_DEBUG=true APP_KEY=your-unique-key // Generate using `php artisan key:generate` PIO_KEY=your-pio-app-key TMDB_KEY=your-tmdb-api-key CACHE_DRIVER=file SESSION_DRIVER=file QUEUE_DRIVER=database</code>
創建
:
app/Classes/Pio.php
中的啟用會話:<?php namespace App\Classes; use predictionio\EventClient; use predictionio\EngineClient; class Pio { public function eventClient() { $key = env('PIO_KEY'); $server = 'http://127.0.0.1:7070'; return new EventClient($key, $server); } public function predictionClient() { $server = 'http://127.0.0.1:8192'; return new EngineClient($server); } }
bootstrap/app.php
:$app->middleware([ Illuminate\Session\Middleware\StartSession::class, ]);
app/Http/Controllers/AdminController.php
函數的實現與原始的實現基本相同,但具有改進的可變命名和格式以提高清晰度。 Elasticsearch保持不變。)<?php namespace App\Http\Controllers; use Laravel\Lumen\Routing\Controller as BaseController; use App\Classes\Pio; use GuzzleHttp\Client; use Elasticsearch\Client as ElasticsearchClient; class AdminController extends BaseController { public function importMovies(Pio $pio) { // ... (Import logic as described in the original, but using more concise variable names and improved formatting) ... } }
添加路由:importMovies
app/Http/routes.php
$app->get('/movies/import', 'AdminController@importMovies');
:
app/Http/Controllers/HomeController.php
中的添加路由:<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Laravel\Lumen\Routing\Controller as BaseController; use App\Classes\Pio; use Elasticsearch\Client as ElasticsearchClient; class HomeController extends BaseController { public function index(Pio $pio) { // ... (Session setup and view rendering as in the original) ... } public function randomMovie(Request $request, Pio $pio) { // ... (Random movie selection and user action recording logic as in the original) ... } public function recommendedMovies(Pio $pio) { // ... (Recommendation retrieval and view rendering logic as in the original) ... } }
app/Http/routes.php
>和$app->get('/', 'HomeController@index'); $app->post('/movie/random', 'HomeController@randomMovie'); $app->get('/movies/recommended', 'HomeController@recommendedMovies');
index.blade.php
>部署和訓練預測引擎:recommended_movies.blade.php
main.js
>engine.json
(在您的預測引擎目錄中)正確地指向您的預測應用程序ID和名稱。 pio build --verbose
pio train --verbose
pio deploy --port 8192
添加cron作業(根據需要調整路徑):
<code>APP_ENV=local APP_DEBUG=true APP_KEY=your-unique-key // Generate using `php artisan key:generate` PIO_KEY=your-pio-app-key TMDB_KEY=your-tmdb-api-key CACHE_DRIVER=file SESSION_DRIVER=file QUEUE_DRIVER=database</code>
結論:
以上是預測和管腔:構建電影推薦應用程序的詳細內容。更多資訊請關注PHP中文網其他相關文章!