承接 hans-thomas/lilac 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

hans-thomas/lilac

Composer 安装命令:

composer require hans-thomas/lilac

包简介

it is a recommender system based-on pairwise association rules.

README 文档

README

It's a recommender system using pairwise association rules (PAR) based-on this paper. There is an enhanced PAR (EPAR) algorithm which reduces the producing recommendation time. this recommender system is able to create train model and generate recommends for one or more than one model.

Installation

Via composer

composer require hans-thomas/lilac

Then

php artisan vendor:publish --tag lilac-config

Usage

Let's assume there are two Post and Category models which they have a many-to-many relationship.

Config

In config file, we should define our relationship first. there is a template definition of a relation that you can edit that.

// config/lilac.php

return [
    // ...

    'relations'                => [
        Post::class => [
            'wrappedByModel'                 => Category::class,
            'wrappedByModelRelationToEntity' => 'posts',
            'entityModelRelationToWrappedBy' => 'categories',
        ]
    ]
];

Available methods

recommends

To generate some recommendation, use recommends method.

use Hans\Lilac\Facades\Lilac;

Lilac::recommends( $ids );

It will return a collection of models that sorted by the score they've got.

updateTrainModel

Lilac provides a caching system to store the created data and prevents to create duplicate train model. when you create some recommendation for a model(s), the related train model will be cached for future use. meanwhile, you make some changes in the relationship between you models. in this scenario, if you try to create some recommendation for you model, you will receive out-dated recommends. to fix this, you can run updateTrainModel for updated related model(s).

use Hans\Lilac\Facades\Lilac;

Lilac::updateTrainModel( $ids );

This will update and cache the related train model.

fresh

Sometimes you need to ignore cached train models and make recommendation using the latest data from database. for this, you can use fresh method before recommends method.

use Hans\Lilac\Facades\Lilac;

Lilac::fresh()->recommends( $ids );

cache

You may want to create recommendation for two models in one scope. first one using fresh data and second one using cached data. in this situation, you should use cache in you second call.

use Hans\Lilac\Facades\Lilac;

Lilac::fresh()->recommends( $ids );

Lilac::cache()->recommends( $other_ids );

trainer

To set your trainer, you can pass the instance to the trainer method.

use Hans\Lilac\Facades\Lilac;
use Hans\Lilac\Trainers\EPAR;
use Hans\Lilac\Trainers\PAR;

Lilac::trainer( new EPAR( $ids ) )->recommends( $ids );
// or
Lilac::trainer( new PAR )->recommends( $ids );

You can set your default trainer in config file.

limit

You can set a limit to returned recommendation count.

use Hans\Lilac\Facades\Lilac;

Lilac::limit( 10 )->recommends( $ids );

Jobs

To automatically keep train models up-to-date, there are two jobs than you can use. You can fire these jobs whenever you update the relationship or just setting hooks for you relationships using this package.

UpdateEntityTrainModel

To update the train model of a single model, you can fire UpdateEntityTrainModel and pass the related model.

UpdateWrapperTrainModel

To update the train model of a bunch of related models, you should pass them as a collection to UpdateWrapperTrainModel job.

Support

统计信息

  • 总下载量: 20
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 1
  • 点击次数: 6
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 1
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2022-04-26

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固