>本教程演示了使用预测和管腔构建电影推荐应用程序。 我们将介绍数据导入,随机的电影选择,推荐生成和引擎部署。
>
密钥概念:
.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
中的启用会话:<code class="language-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); } }</code>
bootstrap/app.php
:<code class="language-php">$app->middleware([ Illuminate\Session\Middleware\StartSession::class, ]);</code>
app/Http/Controllers/AdminController.php
函数的实现与原始的实现基本相同,但具有改进的可变命名和格式以提高清晰度。 Elasticsearch保持不变。)<code class="language-php"><?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) ... } }</code>
添加路由:importMovies
app/Http/routes.php
<code class="language-php">$app->get('/movies/import', 'AdminController@importMovies');</code>创建
:
app/Http/Controllers/HomeController.php
中的添加路由:<code class="language-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) ... } }</code>
app/Http/routes.php
>和<code class="language-php">$app->get('/', 'HomeController@index'); $app->post('/movie/random', 'HomeController@randomMovie'); $app->get('/movies/recommended', 'HomeController@recommendedMovies');</code>>
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中文网其他相关文章!