ExTypesense.Curation (ExTypesense v2.0.0)

View Source

While Typesense makes it really easy and intuitive to deliver great search results, sometimes you might want to promote certain documents over others. Or, you might want to exclude certain documents from a query's result set.

Using overrides, you can include or exclude specific documents for a given query.

More here: https://typesense.org/docs/latest/api/curation.html#create-or-update-an-override

Summary

Functions

Delete an override associated with a collection

Retrieve the details of a search override, given its id.

Listing all overrides associated with a given collection.

Create or update an override to promote certain documents over others. Using overrides, you can include or exclude specific documents for a given query.

Functions

delete_override(coll_name, override_id)

(since 1.0.0)

Delete an override associated with a collection

delete_override(module, override_id, opts)

(since 1.0.0)

Same as delete_override/2

Options

  • conn: The custom connection map or struct you passed

Examples

iex> conn = %{api_key: xyz, host: ...}
iex> ExTypesense.delete_override("persons", "person-override", conn: conn)

iex> conn = OpenApiTypesense.Connection.new()
iex> ExTypesense.delete_override("persons", "person-override", conn: conn)

iex> opts = [conn: conn]
iex> ExTypesense.delete_override(MyApp.Accounts.Person, "person-override", opts)

get_override(coll_name, override_id)

(since 1.0.0)
@spec get_override(String.t() | module(), String.t()) ::
  {:ok, OpenApiTypesense.SearchOverride.t()} | :error

Retrieve the details of a search override, given its id.

get_override(module, override_id, opts)

(since 1.0.0)
@spec get_override(String.t() | module(), String.t(), keyword()) ::
  {:ok, OpenApiTypesense.SearchOverride.t()} | :error

Same as get_override/2

Options

  • conn: The custom connection map or struct you passed

Examples

iex> conn = %{api_key: xyz, host: ...}
iex> ExTypesense.get_override("helmets", "custom-helmet", conn: conn)

iex> conn = OpenApiTypesense.Connection.new()
iex> ExTypesense.get_override("helmets", "custom-helmet", conn: conn)

iex> opts = [conn: conn]
iex> ExTypesense.get_override(MyApp.Wearables.Helmet, "custom-helmet", opts)

list_overrides(collection_name)

(since 1.0.0)
@spec list_overrides(String.t() | module()) ::
  {:ok, OpenApiTypesense.SearchOverridesResponse.t()} | :error

Listing all overrides associated with a given collection.

Error

By default, ALL overrides are returned, but you can use the offset and limit parameters to paginate on the listing.

Options

  • limit: Limit results in paginating on collection listing.
  • offset: Skip a certain number of results and start after that.

list_overrides(module, opts)

(since 1.0.0)
@spec list_overrides(
  String.t() | module(),
  keyword()
) :: {:ok, OpenApiTypesense.SearchOverridesResponse.t()} | :error

Same as list_overrides/1.

Options

  • conn: The custom connection map or struct you passed

Examples

iex> conn = %{api_key: xyz, host: ...}
iex> ExTypesense.list_overrides("persons", limit: 10, conn: conn)

iex> conn = OpenApiTypesense.Connection.new()
iex> ExTypesense.list_overrides("persons", conn: conn)

iex> opts = [conn: conn]
iex> ExTypesense.list_overrides(MyApp.Accounts.Person, opts)

upsert_override(coll_name, override_id, body)

(since 1.0.0)
@spec upsert_override(String.t() | module(), String.t(), map()) ::
  {:ok, OpenApiTypesense.SearchOverride.t()}
  | {:error, OpenApiTypesense.ApiResponse.t()}

Create or update an override to promote certain documents over others. Using overrides, you can include or exclude specific documents for a given query.

Examples

iex> body = %{
...>     "rule" => %{
...>       "query" => "Grocter and Pamble",
...>       "match" => "exact"
...>     },
...>     "includes" => [
...>       %{"id" => "2", "position" => 44},
...>       %{"id" => "4", "position" => 10}
...>     ],
...>     "excludes" => [
...>       %{"id" => "117"}
...>     ]
...> }
iex> ExTypesense.upsert_override("companies", "cust-company", body)

upsert_override(module, override_id, body, opts)

(since 1.0.0)
@spec upsert_override(String.t() | module(), String.t(), map(), keyword()) ::
  {:ok, OpenApiTypesense.SearchOverride.t()}
  | {:error, OpenApiTypesense.ApiResponse.t()}

Same as upsert_override/3

Options

  • conn: The custom connection map or struct you passed

Examples

iex> conn = %{api_key: xyz, host: ...}
iex> ExTypesense.upsert_override("helmets", "custom-helmet", body, conn: conn)

iex> conn = OpenApiTypesense.Connection.new()
iex> ExTypesense.upsert_override("helmets", "custom-helmet", body, conn: conn)

iex> opts = [conn: conn]
iex> ExTypesense.upsert_override(MyApp.Wearables.Helmet, "custom-helmet", body, opts)