В вашем коде есть ряд проблем
- вы определяете функцию, но не используете ее, вам нужно добавить вызов в конце
- вы неправильно используете toString, если вы настаиваете на строках, используйте String (значение)
- если вы используете строки, вы не можете добавить их с помощью '+', чтобы добавить их числовые значения ...
- у вас есть лишний +1 в конце
- вы используете очень медленную реализацию этого алгоритма, вы должны использовать что-то более быстрое, читайте различные способы его вычисления
Вот исправленная версия (все еще медленная, но работает):
CREATE OR REPLACE FUNCTION cat_map_trial4(a string,b string)
RETURNS STRING
LANGUAGE JAVASCRIPT
AS
$$
function levenshteinDistance(s1, s2) {
if (!s1.length) return s2.length;
if (!s2.length) return s1.length;
return Math.min(
levenshteinDistance(s1.substr(1), s2) + 1,
levenshteinDistance(s2.substr(1), s1) + 1,
levenshteinDistance(s1.substr(1), s2.substr(1)) + (s1[0] !== s2[0] ? 1 : 0)
);
}
return levenshteinDistance(A, B);
$$;
Но самая большая проблема с вашим кодом в том, что он совершенно не нужен , так как Snowflake, будучи таким же крутым, обеспечивает встроенную быструю EDITDISTANCE
функцию: )