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();