Skip to main content

RecommendationEngine

Struct RecommendationEngine 

Source
pub struct RecommendationEngine { /* private fields */ }
Expand description

Main recommendation engine coordinating all recommendation capabilities

Implementations§

Source§

impl RecommendationEngine

Source

pub fn new() -> Self

Create a new recommendation engine with no rate limiting.

Source

pub fn with_rate_limiter(config: RateLimitConfig, now: i64) -> Self

Create a new recommendation engine with rate limiting enabled.

config controls per-user and global token-bucket parameters. now is the initial Unix timestamp (seconds) used to seed the buckets.

Source

pub fn set_rate_limiter(&mut self, config: RateLimitConfig, now: i64)

Enable (or replace) the rate limiter on an existing engine.

Source

pub fn disable_rate_limiter(&mut self)

Disable rate limiting on this engine.

Source

pub fn has_rate_limiter(&self) -> bool

Returns true if rate limiting is currently enabled.

Source

pub fn user_available_tokens(&self, user_id: &str) -> Option<f64>

Query how many tokens remain for a user without consuming any.

Returns None if rate limiting is disabled or if the user has no bucket yet.

Source

pub fn global_available_tokens(&self) -> Option<f64>

Query how many global tokens remain without consuming any.

Returns None if rate limiting is disabled.

Source

pub fn recommend( &mut self, request: &RecommendationRequest, ) -> RecommendResult<RecommendationResults>

Get recommendations for a user

For the Hybrid strategy, all sub-strategies are evaluated in parallel via rayon. The resulting candidate lists are merged and deduplicated by content ID, taking the maximum score for any item that appeared in multiple strategy outputs.

If a rate limiter is configured, the request is checked against both the per-user and global token buckets. When the limit is exceeded a RecommendError::RateLimited error is returned immediately.

§Errors

Returns an error if recommendation generation fails or the caller is rate-limited.

Source

pub fn record_view( &mut self, user_id: Uuid, content_id: Uuid, watch_time_ms: i64, completed: bool, ) -> RecommendResult<()>

Record a user view event

§Errors

Returns an error if recording fails

Source

pub fn record_rating( &mut self, user_id: Uuid, content_id: Uuid, rating: f32, ) -> RecommendResult<()>

Record an explicit rating

§Errors

Returns an error if recording fails

Update trending scores

§Errors

Returns an error if update fails

Source

pub fn get_user_profile(&self, user_id: Uuid) -> RecommendResult<UserProfile>

Get user profile

§Errors

Returns an error if retrieval fails

Source

pub fn get_similar_users( &self, user_id: Uuid, limit: usize, ) -> RecommendResult<Vec<Uuid>>

Get similar users

§Errors

Returns an error if retrieval fails

Trait Implementations§

Source§

impl Default for RecommendationEngine

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.