Wpis z mikrobloga

@koob: @Jahcob: dobra... z dużym uogólnieniem:

mam bazę z ponad 2 mln rekordów (obecnie #mysql), wstawiając kolejne wiersze muszę wykonać niestety porównanie, by sprawdzić, czy nowy wiersz powinien być zmerdżowany do innego, czy powinien tworzyć nowy. Niestety owo sprawdzanie jest cholernie wolne, bowiem muszę porównać, czy dwa wiersze mają odpowiedni współczynnik podobieństwa tekstu (długość levenshteina)
@noisy: wstawianie jest dość wolne, bowiem w praktyce jest ono złożoności O(n^2/2 * k), gdzie n jest liczba wierszy a k długością stringa, po którym funkcja levenshteina poddaje się twierdząc, że wpisy nie są podobne.
@noisy: w obecnym rozwiązaniu tworzenie indeksów nie daje zysku, bowiem select, który jest konieczny przed insertem wywołuje funkcje, a nie korzysta z standardowych operatorów jak =, >, <
@koob: nie wprost, ale to się dzieje pod spodem. levenshtein ma złożoność k^2 (gdzie k to jest min długości dwoch porownywanych stringow), jednak ja uzywam funkcji levenshteina o zlozonosci liniowej, by zdobyc "kandydatow", ktora nie sprawdza czy są dopasowane, tylko czy są na tyle niepodobne dwa rekordy
@noisy: funkcja liczaca tego levensthteina masz zadeklarowana w mysqlu jak rozumiem ? Moze sprawdz przez rozszerzenia (so/dll), gdzies pewnie znajdziesz na googlach gotowca.