Datum word_similarity_dist_commutator_op(PG_FUNCTION_ARGS) { text *in1 = PG_GETARG_TEXT_PP(0); text *in2 = PG_GETARG_TEXT_PP(1); float4 res; res = calc_word_similarity(VARDATA_ANY(in2), VARSIZE_ANY_EXHDR(in2), VARDATA_ANY(in1), VARSIZE_ANY_EXHDR(in1), false); PG_FREE_IF_COPY(in1, 0); PG_FREE_IF_COPY(in2, 1); PG_RETURN_FLOAT4(1.0 - res); }
Datum strict_word_similarity_dist_op(PG_FUNCTION_ARGS) { text *in1 = PG_GETARG_TEXT_PP(0); text *in2 = PG_GETARG_TEXT_PP(1); float4 res; res = calc_word_similarity(VARDATA_ANY(in1), VARSIZE_ANY_EXHDR(in1), VARDATA_ANY(in2), VARSIZE_ANY_EXHDR(in2), WORD_SIMILARITY_STRICT); PG_FREE_IF_COPY(in1, 0); PG_FREE_IF_COPY(in2, 1); PG_RETURN_FLOAT4(1.0 - res); }
Datum word_similarity_commutator_op(PG_FUNCTION_ARGS) { text *in1 = PG_GETARG_TEXT_PP(0); text *in2 = PG_GETARG_TEXT_PP(1); float4 res; res = calc_word_similarity(VARDATA_ANY(in2), VARSIZE_ANY_EXHDR(in2), VARDATA_ANY(in1), VARSIZE_ANY_EXHDR(in1), true); PG_FREE_IF_COPY(in1, 0); PG_FREE_IF_COPY(in2, 1); PG_RETURN_BOOL(res >= word_similarity_threshold); }
Datum strict_word_similarity_commutator_op(PG_FUNCTION_ARGS) { text *in1 = PG_GETARG_TEXT_PP(0); text *in2 = PG_GETARG_TEXT_PP(1); float4 res; res = calc_word_similarity(VARDATA_ANY(in2), VARSIZE_ANY_EXHDR(in2), VARDATA_ANY(in1), VARSIZE_ANY_EXHDR(in1), WORD_SIMILARITY_CHECK_ONLY | WORD_SIMILARITY_STRICT); PG_FREE_IF_COPY(in1, 0); PG_FREE_IF_COPY(in2, 1); PG_RETURN_BOOL(res >= strict_word_similarity_threshold); }