Tutorial ini menunjukkan membina aplikasi cadangan filem menggunakan Ramalan dan Lumen. Kami akan meliputi import data, pemilihan filem rawak, penjanaan cadangan, dan penyebaran enjin.
Konsep Utama:
.env
kelas Pio
di direktori aplikasi lumen anda dengan yang berikut:
ingat untuk menggantikan ruang letak dengan kekunci sebenar anda.
.env
<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>
Buat :
app/Classes/Pio.php
membolehkan sesi dalam <?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
Buat $app->middleware([ Illuminate\Session\Middleware\StartSession::class, ]);
app/Http/Controllers/AdminController.php
(nota: pelaksanaan fungsi <?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) ... } }
tambahkan laluan di importMovies
:
app/Http/routes.php
memaparkan filem rawak dan merakam tindakan pengguna: $app->get('/movies/import', 'AdminController@importMovies');
Buat :
app/Http/Controllers/HomeController.php
tambah laluan dalam <?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
Buat pandangan $app->get('/', 'HomeController@index'); $app->post('/movie/random', 'HomeController@randomMovie'); $app->get('/movies/recommended', 'HomeController@recommendedMovies');
index.blade.php
Menggunakan dan melatih enjin ramalan: recommended_movies.blade.php
main.js
engine.json
(dalam direktori enjin predictio anda) untuk menunjuk dengan betul kepada ID dan nama aplikasi Predictioo anda. pio build --verbose
pio train --verbose
pio deploy --port 8192
tambah pekerjaan cron (laraskan laluan yang diperlukan):
<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>
Kesimpulan:
Versi yang diselaraskan ini mengekalkan fungsi tutorial asal sambil meningkatkan kebolehbacaan dan organisasi. Ingatlah untuk memasang pakej yang diperlukan (Predictionio SDK, Guzzle, ELASTICSearch Client, dan Handlebars untuk Frontend). Seksyen Soalan Lazim dari asalnya tetap relevan dan memberikan maklumat tambahan yang berharga.
Atas ialah kandungan terperinci Ramalan dan Lumen: Membina Aplikasi Cadangan Filem. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!