ExTypesense.Synonym (ExTypesense v1.1.0)

View Source

The synonyms feature allows you to define search terms that should be considered equivalent. For eg: when you define a synonym for sneaker as shoe, searching for sneaker will now return all records with the word shoe in them, in addition to records with the word sneaker.

More here: https://typesense.org/docs/latest/api/synonyms.html

Summary

Functions

Delete a single synonym from a collection.

Same as delete_synonym/3 but passes another connection.

Retrieve a single synonym from a collection.

Same as get_synonym/3 but passes another connection.

List all synonyms associated with a given collection.

Same as list_synonyms/2 but passes another connection.

Create or update a synonym

Functions

delete_synonym(coll_name, syn_id)

(since 1.0.0)

Delete a single synonym from a collection.

delete_synonym(coll_name, syn_id, opts)

(since 1.0.0)

Same as delete_synonym/2.

ExTypesense.delete_synonym("cars", "sedan-synonym", [])
ExTypesense.delete_synonym(%{api_key: xyz, host: ...}, "cars", "sedan-synonym")
ExTypesense.delete_synonym(OpenApiTypesense.Connection.new(), MyApp.Vehicle.Car, "sedan-synonym")

delete_synonym(conn, module, syn_id, opts)

(since 1.0.0)

Same as delete_synonym/3 but passes another connection.

ExTypesense.delete_synonym(%{api_key: xyz, host: ...}, "cars", "sedan-synonym", [])
ExTypesense.delete_synonym(OpenApiTypesense.Connection.new(), MyApp.Vehicle.Car, "sedan-synonym", [])

get_synonym(coll_name, syn_id)

(since 1.0.0)
@spec get_synonym(String.t() | module(), String.t()) ::
  {:ok, OpenApiTypesense.SearchSynonym.t()}
  | {:error, OpenApiTypesense.ApiResponse.t()}

Retrieve a single synonym from a collection.

get_synonym(coll_name, syn_id, opts)

(since 1.0.0)

Same as get_synonym/2.

ExTypesense.get_synonym("cars", "sedan-synonym", [])
ExTypesense.get_synonym(%{api_key: xyz, host: ...}, "cars", "sedan-synonym")
ExTypesense.get_synonym(OpenApiTypesense.Connection.new(), MyApp.Vehicle.Car, "sedan-synonym")

get_synonym(conn, module, syn_id, opts)

(since 1.0.0)

Same as get_synonym/3 but passes another connection.

ExTypesense.get_synonym(%{api_key: xyz, host: ...}, "cars", "sedan-synonym", [])
ExTypesense.get_synonym(OpenApiTypesense.Connection.new(), MyApp.Vehicle.Car, "sedan-synonym", [])

list_synonyms(collection_name)

(since 1.0.0)
@spec list_synonyms(String.t() | module()) ::
  {:ok, OpenApiTypesense.SearchSynonymsResponse.t()}
  | {:error, OpenApiTypesense.ApiResponse.t()}

List all synonyms associated with a given collection.

Error

By default, ALL synonyms 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_synonyms(coll_name, opts)

(since 1.0.0)

Same as list_synonyms/1.

ExTypesense.list_synonyms("persons", [])
ExTypesense.list_synonyms(%{api_key: xyz, host: ...}, "persons")
ExTypesense.list_synonyms(OpenApiTypesense.Connection.new(), MyApp.Accounts.Person)

list_synonyms(conn, module, opts)

(since 1.0.0)

Same as list_synonyms/2 but passes another connection.

ExTypesense.list_synonyms(%{api_key: xyz, host: ...}, "persons", limit: 10)
ExTypesense.list_synonyms(OpenApiTypesense.Connection.new(), MyApp.Accounts.Person, [])

upsert_synonym(coll_name, syn_id, body)

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

Create or update a synonym

Examples

iex> body = %{
...>   "synonyms" => ["blazer", "coat", "jacket"],
...> }

iex> ExTypesense.upsert_synonym("products", "coat-synonyms", body)

upsert_synonym(coll_name, syn_id, body, opts)

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

Same as upsert_synonym/3.

ExTypesense.upsert_synonym("persons", "coat-synonyms", body, [])
ExTypesense.upsert_synonym(%{api_key: xyz, host: ...}, "persons", "coat-synonyms", body)
ExTypesense.upsert_synonym(OpenApiTypesense.Connection.new(), MyApp.Accounts.Person, "coat-synonyms", body)

upsert_synonym(conn, module, syn_id, body, opts)

(since 1.0.0)

Same as upsert_synonym/4 but passes another connection.

ExTypesense.upsert_synonym(%{api_key: xyz, host: ...}, "persons", "coat-synonyms", body, [])
ExTypesense.upsert_synonym(OpenApiTypesense.Connection.new(), MyApp.Accounts.Person, "coat-synonyms", body, [])