Linux за българи: Форуми

Програмиране => Web development => Темата е започната от: VladSun в Jan 19, 2010, 01:29



Титла: Damerau-Levenshtein дистанция (PHP модул)
Публикувано от: VladSun в Jan 19, 2010, 01:29
Компилиране:
Код
GeSHi (Bash):
  1. phpize && ./configure --enable-damerau-levenshtein && make && make test

.so файлът е в ./modules - трябва да се копира в extensions директорията на PHP и да се активира от php.ini

Код:
extension=damerau_levenshtein.so

Употреба:
Код
GeSHi (PHP):
  1. echo damerau_levenshtein("monday", "mondya")
=> 1


Титла: Re: Damerau-Levenshtein дистанция (PHP модул)
Публикувано от: zeridon в Jan 19, 2010, 11:49
За тези като мен които гледат като теле в железница ето какво е Damerau-Levenshtein дистанция ($2)

btw Каква му е употребата? не ми се вярва да е много полезно освен може би за опити за транслитерация или пък мачване на странни писаници (тип чатица)


Титла: Re: Damerau-Levenshtein дистанция (PHP модул)
Публикувано от: VladSun в Jan 19, 2010, 12:36
Аз го използвам за проверка на полета попълвани от потребителя:
- потребителят въвежда данните в полето;
- прави се проверка за вече въведени текстове с дистанция под определен праг;
- ако съществуват такива текстове, потребителя се предупреждава и може да коригира своя текст;

По този начин се намаляват записите с дублирана поради неточно въвеждане информация.

Естествено, в повечето случаи се работи с ДБ и е нормално да се използва UDF за дистанция в базата, а не в кода - такива примери има в доста Интернет. Ако обаче се работи с XML например, то тази функция е доста полезна за такъв род проверки.

За съжаление в стандартното PHP има само levenshtein() функция, което и беше причината да попиша ;)

Имам идея тази функция да се пренапише по отношение на клавиатурните подредби - т.е. дистанцията на близки на клавиатурата букви да е по-малка от останалите.


Титла: Re: Damerau-Levenshtein дистанция (PHP модул)
Публикувано от: VladSun в Jan 19, 2010, 12:51
Честно казано, ми беше по-интересно как се пишат разширения за PHP :)
Има доста неща, които са ми трябвали, но ги няма.