Rumah >pembangunan bahagian belakang >tutorial php >Ramalan dan Lumen: Membina Aplikasi Cadangan Filem

Ramalan dan Lumen: Membina Aplikasi Cadangan Filem

Jennifer Aniston
Jennifer Anistonasal
2025-02-15 12:34:12689semak imbas

Tutorial ini menunjukkan membina aplikasi cadangan filem menggunakan Ramalan dan Lumen. Kami akan meliputi import data, pemilihan filem rawak, penjanaan cadangan, dan penyebaran enjin.

PredictionIO and Lumen: Building a Movie Recommendation App

Konsep Utama:

Buat fail

di direktori aplikasi lumen anda dengan yang berikut:

ingat untuk menggantikan ruang letak dengan kekunci sebenar anda.

.env

Import Data (TMDB ke 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>

Buat :

  1. app/Classes/Pio.php membolehkan sesi dalam
  2. :
<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>
  1. bootstrap/app.php Buat
  2. :
<code class="language-php">$app->middleware([
    Illuminate\Session\Middleware\StartSession::class,
]);</code>
  1. app/Http/Controllers/AdminController.php (nota: pelaksanaan fungsi
  2. tetap sama seperti yang asal, tetapi dengan penamaan dan pemformatan yang lebih baik untuk kejelasan. Elasticsearch tetap tidak berubah.)
<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>

tambahkan laluan di importMovies:

  1. app/Http/routes.php memaparkan filem rawak dan merakam tindakan pengguna:
<code class="language-php">$app->get('/movies/import', 'AdminController@importMovies');</code>

Buat :

  1. app/Http/Controllers/HomeController.php tambah laluan dalam
  2. :
<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>
  1. app/Http/routes.php Buat pandangan
  2. dan
(HTML seperti yang disediakan dalam asal). JavaScript () juga tetap sama.
<code class="language-php">$app->get('/', 'HomeController@index');
$app->post('/movie/random', 'HomeController@randomMovie');
$app->get('/movies/recommended', 'HomeController@recommendedMovies');</code>
  1. index.blade.php Menggunakan dan melatih enjin ramalan: recommended_movies.blade.php main.js
    1. Ubah suai engine.json (dalam direktori enjin predictio anda) untuk menunjuk dengan betul kepada ID dan nama aplikasi Predictioo anda.
    2. Bina enjin: pio build --verbose
    3. melatih enjin: pio train --verbose
    4. menggunakan enjin: 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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn