Dieses Tutorial zeigt, dass das Erstellen einer Filmempfehlungs -App mit Predictionio und Lumen erstellt wird. Wir werden Datenimport, zufällige Filmauswahl, Empfehlungsgenerierung und Engine -Bereitstellung behandeln.
Schlüsselkonzepte:
.env
Datei) Speichern Sie die Vorhersage, TMDB -API -Schlüssel und Anwendungseinstellungen sicher. Pio
-Klasses vereinfacht die Interaktion mit den Ereignis- und Engine -Clients von Predictionio, importieren TMDB -Daten in Stapeln und indizieren sie in Elasticsearch für ein effizientes Abrufen. Einrichten der Umgebung:
.env
Erstellen Sie eine
<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>
Denken Sie daran, Platzhalter durch Ihre tatsächlichen Schlüssel zu ersetzen.
Datenimport (TMDB bis Predictionio & ElasticSearch):
app/Classes/Pio.php
erstellen <?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
Aktivitäten in $app->middleware([ Illuminate\Session\Middleware\StartSession::class, ]);
app/Http/Controllers/AdminController.php
erstellen <?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
(Hinweis: Die Implementierung der Funktion bleibt weitgehend übereinst Elasticsearch bleibt unverändert.)
app/Http/routes.php
Fügen Sie die Route in $app->get('/movies/import', 'AdminController@importMovies');
Zeigen Sie zufällige Filme und Aufzeichnung von Benutzeraktionen:
app/Http/Controllers/HomeController.php
erstellen <?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
Routen in $app->get('/', 'HomeController@index'); $app->post('/movie/random', 'HomeController@randomMovie'); $app->get('/movies/recommended', 'HomeController@recommendedMovies');
index.blade.php
Erstellen Sie die Ansichten recommended_movies.blade.php
und main.js
(HTML wie im Original angegeben). Das JavaScript (Bereitstellung und Schulung der PredictionIO -Engine:
<🎜>engine.json
bauen Sie den Motor: pio build --verbose
trainieren Sie den Motor: pio train --verbose
Bereitstellen Sie die Engine: pio deploy --port 8192
<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>
Diese optimierte Version behält die Funktionalität des ursprünglichen Tutorials und verbessert gleichzeitig die Lesbarkeit und Organisation der Code. Denken Sie daran, die erforderlichen Pakete zu installieren (Predictionio SDK, Guzzle, Elasticsearch -Client und Lenker für die Frontend). Der FAQS -Abschnitt aus dem Original bleibt relevant und liefert wertvolle zusätzliche Informationen.
Das obige ist der detaillierte Inhalt vonPredictionio und Lumen: Aufbau einer Filmempfehlung App erstellen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!