Skocz do zawartości

Sugestie przy wyszukiwarce..


sniver

Rekomendowane odpowiedzi

W moich obliczeniach sprawdzane są wszystkie n-gramy od 1 do x, gdzie x to niższa liczba znaków w obu porównywanych słowach. Należy też pamiętać że operacja nie jest symetryczna, dlatego przeważnie robi się tak, że sprawdza się wartość dla a,b i dla b,a i wybiera tę niższą.

PS: w poście wyżej Maximus Marius ostatnie elementy "ie" i "e" nie są 3-gramami, ostatnim 3 gramem będzie "nie"

Odnośnik do komentarza
Udostępnij na innych stronach

  • 5 tygodni później...

Uwaga, panie i panowie. Po teorii której sie oczytałem znalazłem wreszcie coś co mi to przelało "na kod" ;)

Działa!;)

Oto kod (może sie komuś przyda):

CREATE DEFINER=`root`@`%` FUNCTION `LEVENSHTEIN`( s1 VARCHAR(255), s2 VARCHAR(255) ) RETURNS int(11)

DETERMINISTIC

BEGIN

DECLARE s1_len, s2_len, i, j, c, c_temp, cost INT;

DECLARE s1_char CHAR;

-- max strlen=255

DECLARE cv0, cv1 VARBINARY(256);

SET s1_len = CHAR_LENGTH(s1), s2_len = CHAR_LENGTH(s2), cv1 = 0x00, j = 1, i = 1, c = 0;

IF s1 = s2 THEN

RETURN 0;

ELSEIF s1_len = 0 THEN

RETURN s2_len;

ELSEIF s2_len = 0 THEN

RETURN s1_len;

ELSE

WHILE j <= s2_len DO

SET cv1 = CONCAT(cv1, UNHEX(HEX(j))), j = j + 1;

END WHILE;

WHILE i <= s1_len DO

SET s1_char = SUBSTRING(s1, i, 1), c = i, cv0 = UNHEX(HEX(i)), j = 1;

WHILE j <= s2_len DO

SET c = c + 1;

IF s1_char = SUBSTRING(s2, j, 1) THEN

SET cost = 0; ELSE SET cost = 1;

END IF;

SET c_temp = CONV(HEX(SUBSTRING(cv1, j, 1)), 16, 10) + cost;

IF c > c_temp THEN SET c = c_temp; END IF;

SET c_temp = CONV(HEX(SUBSTRING(cv1, j+1, 1)), 16, 10) + 1;

IF c > c_temp THEN

SET c = c_temp;

END IF;

SET cv0 = CONCAT(cv0, UNHEX(HEX©)), j = j + 1;

END WHILE;

SET cv1 = cv0, i = i + 1;

END WHILE;

END IF;

RETURN c;

END

..:: Strony WWW ::....:: Nowe technologie ::....:: Hurtownie ::....:: Reszte znajdziesz w google.pl ::..

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności