ExTypesense.Curation (ExTypesense v1.1.0)
View SourceWhile 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
Same as delete_override/3 but passes another connection.
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.
Same as upsert_override/4 but passes another connection.
Functions
@spec delete_override(String.t() | module(), String.t()) :: {:ok, OpenApiTypesense.SearchOverrideDeleteResponse.t()} | {:error, OpenApiTypesense.ApiResponse.t()}
Delete an override associated with a collection
@spec delete_override( map() | OpenApiTypesense.Connection.t() | String.t() | module(), String.t() | module(), String.t() | keyword() ) :: {:ok, OpenApiTypesense.SearchOverrideDeleteResponse.t()} | {:error, OpenApiTypesense.ApiResponse.t()}
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")
@spec delete_override( map() | OpenApiTypesense.Connection.t(), String.t() | module(), String.t(), keyword() ) :: {:ok, OpenApiTypesense.SearchOverrideDeleteResponse.t()} | {:error, OpenApiTypesense.ApiResponse.t()}
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", [])
@spec get_override(String.t() | module(), String.t()) :: {:ok, OpenApiTypesense.SearchOverride.t()} | :error
Retrieve the details of a search override, given its id.
@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")
@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", [])
@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.
@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)
@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, [])
@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)
@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)
@spec upsert_override( map() | OpenApiTypesense.Connection.t(), String.t() | module(), String.t(), map(), keyword() ) :: {:ok, OpenApiTypesense.SearchOverride.t()} | {:error, OpenApiTypesense.ApiResponse.t()}
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, [])