ExUtcp.Search (ex_utcp v0.3.2)

Copy Markdown View Source

Advanced search functionality for UTCP tools and providers.

Provides multiple search algorithms including:

  • Exact matching
  • Fuzzy search with similarity scoring
  • Semantic search based on descriptions
  • Tag-based filtering
  • Provider-based filtering
  • Transport-based filtering

Summary

Functions

Gets search suggestions based on partial query.

Creates a new search engine with default configuration.

Searches for providers using the specified query and options.

Searches for tools using the specified query and options.

Suggests similar tools based on a given tool.

Types

search_options()

@type search_options() :: %{
  algorithm: :exact | :fuzzy | :semantic | :combined,
  filters: %{providers: [String.t()], transports: [atom()], tags: [String.t()]},
  limit: integer(),
  threshold: float(),
  include_descriptions: boolean(),
  use_haystack: boolean(),
  security_scan: boolean(),
  filter_sensitive: boolean()
}

search_result()

@type search_result() :: %{
  tool: ExUtcp.Types.tool(),
  score: float(),
  match_type: :exact | :fuzzy | :semantic,
  matched_fields: [String.t()],
  security_warnings: [map()]
}

Functions

get_suggestions(engine, partial_query, opts \\ [])

@spec get_suggestions(ExUtcp.Search.Engine.t(), String.t(), keyword()) :: [String.t()]

Gets search suggestions based on partial query.

new(opts \\ [])

@spec new(keyword()) :: ExUtcp.Search.Engine.t()

Creates a new search engine with default configuration.

search_providers(engine, query)

@spec search_providers(ExUtcp.Search.Engine.t(), String.t()) :: [map()]

Searches for providers using the specified query and options.

search_providers(engine, query, opts)

@spec search_providers(ExUtcp.Search.Engine.t(), String.t(), map()) :: [map()]

search_tools(engine, query)

@spec search_tools(ExUtcp.Search.Engine.t(), String.t()) :: [search_result()]

Searches for tools using the specified query and options.

search_tools(engine, query, opts)

@spec search_tools(ExUtcp.Search.Engine.t(), String.t(), map()) :: [search_result()]

suggest_similar_tools(engine, tool, opts \\ [])

@spec suggest_similar_tools(ExUtcp.Search.Engine.t(), ExUtcp.Types.tool(), keyword()) ::
  [
    search_result()
  ]

Suggests similar tools based on a given tool.