Skip to main content

SearchEngine

Struct SearchEngine 

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

Fuzzy search engine backed by nucleo-matcher.

§Field coverage

Agent searches match against a single concatenated haystack built as: "{id} {name} {provider} {summary}" — covering all four fields required by Req 16.2 and 32.2.

Skill searches match against "{id} {name} {summary}" — id, name, and summary as required by Req 32.2.

§Performance

For catalogs of < 100 assets (typical in this repository), fuzzy matching completes well within the 100 ms budget stated in Req 16.2. No explicit benchmarking infrastructure is included here; the design relies on nucleo-matcher’s O(nm) algorithm being fast enough for this dataset size.

Implementations§

Source§

impl SearchEngine

Source

pub fn new() -> Self

Source

pub fn search_agents( &mut self, query: &str, agents: &[Agent], provider_filter: Option<&str>, harness_filter: Option<&str>, ) -> Vec<usize>

Search agents by fuzzy matching against id, name, provider, and summary.

The haystack for each agent is "{id} {name} {provider} {summary}", ensuring all four fields specified in Req 32.2 are covered.

§Filtering

provider_filter and harness_filter are applied first (intersection), then fuzzy matching is applied to the remaining candidates.

§Empty query

If query is empty AND no filters are active, all agent indices are returned in original order (score 0). If filters are active but the query is empty, filtered candidates are returned in original order.

§Return value

Indices into agents sorted by match score descending (highest score first), with ties broken by original index order (stable sort).

Source

pub fn search_skills(&mut self, query: &str, skills: &[Skill]) -> Vec<usize>

Search skills by fuzzy matching against id, name, and summary.

The haystack for each skill is "{id} {name} {summary}" — covering the three fields applicable to skills (no provider field on Skill).

§Empty query

Returns all skill indices in original order.

§Return value

Indices into skills sorted by match score descending (stable).

Trait Implementations§

Source§

impl Default for SearchEngine

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> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self> ⓘ

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> Same for T

Source§

type Output = T

Should always be Self
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.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more