ExTypesense.Curation (ExTypesense v1.2.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.

Same as get_override/3 but passes another connection.

Listing all overrides associated with a given collection.

Same as list_overrides/2 but passes another connection.

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(coll_name, override_id, opts)

(since 1.0.0)

Same as delete_override/2

ExTypesense.delete_override("persons", "person-override", [])

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

ExTypesense.delete_override(OpenApiTypesense.Connection.new(), MyApp.Accounts.Person, "person-override")

delete_override(conn, module, override_id, opts)

(since 1.0.0)

Same as delete_override/3 but passes another connection.

ExTypesense.delete_override(%{api_key: xyz, host: ...}, "persons", "person-override", [])

ExTypesense.delete_override(OpenApiTypesense.Connection.new(), MyApp.Accounts.Person, "person-override", [])

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(coll_name, override_id, opts)

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

Same as get_override/2

ExTypesense.get_override("helmets", "custom-helmet", [])

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

ExTypesense.get_override(OpenApiTypesense.Connection.new(), MyApp.Wearables.Helmet, "custom-helmet")

get_override(conn, module, override_id, opts)

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

Same as get_override/3 but passes another connection.

ExTypesense.get_override(%{api_key: xyz, host: ...}, "helmets", "custom-helmet", [])

ExTypesense.get_override(OpenApiTypesense.Connection.new(), MyApp.Wearables.Helmet, "custom-helmet", [])

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(coll_name, opts)

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

Same as list_overrides/1.

ExTypesense.list_overrides("persons", limit: 10)

ExTypesense.list_overrides(%{api_key: xyz, host: ...}, "persons")

ExTypesense.list_overrides(OpenApiTypesense.Connection.new(), MyApp.Accounts.Person)

list_overrides(conn, module, opts)

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

Same as list_overrides/2 but passes another connection.

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

ExTypesense.list_overrides(OpenApiTypesense.Connection.new(), MyApp.Accounts.Person, [])

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(coll_name, override_id, body, opts)

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

Same as upsert_override/3

ExTypesense.upsert_override("helmets", "custom-helmet", body, [])

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

ExTypesense.upsert_override(OpenApiTypesense.Connection.new(), MyApp.Wearables.Helmet, "custom-helmet", body)

upsert_override(conn, module, override_id, body, opts)

(since 1.0.0)

Same as upsert_override/4 but passes another connection.

ExTypesense.upsert_override(%{api_key: xyz, host: ...}, "helmets", "custom-helmet", body, [])

ExTypesense.upsert_override(OpenApiTypesense.Connection.new(), MyApp.Wearables.Helmet, "custom-helmet", body, [])