PHP code example of janyksteenbeek / laravel-gorse

1. Go to this page and download the library: Download janyksteenbeek/laravel-gorse library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

janyksteenbeek / laravel-gorse example snippets


use JanykSteenbeek\LaravelGorse\Traits\HasGorseFeedback;

class Product extends Model
{
    use HasGorseFeedback;
    
    // Optional: Customize Gorse integration
    protected function gorseCategories(): array
    {
        return ['products', $this->category];
    }
    
    protected function gorseLabels(): array
    {
        return [$this->type, $this->brand];
    }
}

use JanykSteenbeek\LaravelGorse\Traits\HasGorseRecommendations;

class User extends Model
{
    use HasGorseRecommendations;

    protected function gorseLabels(): array
    {
        return [self::class, $this->country];
    }
}

// Get recommendations for a user
$recommendations = $user->recommendations(10); // Get 10 recommendations

// Get category-specific recommendations
$recommendations = $user->categoryRecommendations('electronics', 10);

// Get popular items
$recommendations = $user->popularItems(10);

// Get popular items in a category
$recommendations = $user->popularItemsByCategory('electronics', 10);

// Get session-based recommendations
$recommendations = $user->sessionRecommendations([
    [
        'FeedbackType' => 'click',
        'ItemId' => 'product:123',
        'Timestamp' => '2024-03-20T12:00:00Z'
    ]
], 10);

// Get category-specific session recommendations
$recommendations = $user->sessionCategoryRecommendations('electronics', [
    [
        'FeedbackType' => 'click',
        'ItemId' => 'product:123'
    ]
], 10);

// Get similar users (neighbors)
$similarUsers = $user->userNeighbors(10);

// Record feedback
$user->feedback($product, 'like');

use JanykSteenbeek\LaravelGorse\Facades\Gorse;

// Get recommendations (resolved to model instances)
$recommendations = Gorse::getRecommendations($userId, 10);

// Get raw recommendations without model resolution
$rawRecommendations = Gorse::raw()->getRecommendations($userId, 10);
// Returns a Collection of: [['Id' => 'Product:1', 'Score' => 0.95], ...]

// All recommendation methods return Collections, making them Laravel-friendly
$rawRecommendations->pluck('Score')->avg(); // Get average score
$rawRecommendations->sortByDesc('Score'); // Sort by score
$rawRecommendations->filter(fn ($item) => $item['Score'] > 0.5); // Filter by score

// Or use resolveModels() to control resolution
$rawRecommendations = Gorse::resolveModels(false)->getRecommendations($userId, 10);

// Get category recommendations
$recommendations = Gorse::getCategoryRecommendations($userId, 'electronics', 10);

// Get popular items
$recommendations = Gorse::getPopularItems(10, $userId);

// Get popular items in category
$recommendations = Gorse::getPopularItemsByCategory('electronics', 10, $userId);

// Get session recommendations
$recommendations = Gorse::getSessionRecommendations($feedback, 10);

// Get session recommendations in category
$recommendations = Gorse::getSessionCategoryRecommendations('electronics', $feedback, 10);

// Get similar users
$recommendations = Gorse::getUserNeighbors($userId, 10);

// Insert feedback
Gorse::insertFeedback('like', $userId, $itemId);

// Raw response with scores (as Collection)
$rawRecommendations = Gorse::raw()->getRecommendations($userId, 10);

// Use Collection methods on raw results
$highScoring = $rawRecommendations
    ->filter(fn ($item) => $item['Score'] > 0.8)
    ->sortByDesc('Score')
    ->values();

$averageScore = $rawRecommendations->pluck('Score')->avg();

// Resolved to models with scores (as Collection)
$recommendations = Gorse::getRecommendations($userId, 10);

// Use Collection methods on resolved models
$highScoring = $recommendations
    ->filter(fn ($model) => $model->gorse_score > 0.8)
    ->sortByDesc('gorse_score')
    ->values();

$averageScore = $recommendations->pluck('gorse_score')->avg();
bash
php artisan vendor:publish --tag="gorse-config"