calculations do
calculate :normalized_full_address_similarity,
:float,
expr(fragment("word_similarity(?, ?)", ^arg(:address), normalized_full_address)) do
argument :address, :string, allow_nil?: false
end
calculate :name_similarity,
:float,
expr(fragment("word_similarity(?, ?)", ^arg(:name), name)) do
argument :name, :string, allow_nil?: false
end
calculate :similarity,
:float,
expr(
fragment(
"greatest(?, ?)",
normalized_full_address_similarity(address: arg(:address)),
name_similarity(name: arg(:name))
)
) do
argument :address, :string, allow_nil?: false
argument :name, :string, allow_nil?: false
end
end
calculations do
calculate :normalized_full_address_similarity,
:float,
expr(fragment("word_similarity(?, ?)", ^arg(:address), normalized_full_address)) do
argument :address, :string, allow_nil?: false
end
calculate :name_similarity,
:float,
expr(fragment("word_similarity(?, ?)", ^arg(:name), name)) do
argument :name, :string, allow_nil?: false
end
calculate :similarity,
:float,
expr(
fragment(
"greatest(?, ?)",
normalized_full_address_similarity(address: arg(:address)),
name_similarity(name: arg(:name))
)
) do
argument :address, :string, allow_nil?: false
argument :name, :string, allow_nil?: false
end
end