Автор Тема: Damerau-Levenshtein дистанция (PHP модул)  (Прочетена 794 пъти)

VladSun

  • Moderator
  • Напреднали
  • *****
  • Публикации: 2166
    • Профил
Компилиране:
Код
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
« Последна редакция: Jan 19, 2010, 01:31 от VladSun »
Активен

KISS Principle ( Keep-It-Short-and-Simple )
http://openfmi.net/projects/flattc/
Има 10 вида хора на този свят - разбиращи двоичния код и тези, които не го разбират :P

zeridon

  • Killmode enabled
  • Administrator
  • Напреднали
  • *****
  • Публикации: 1398
  • Distribution: Debian/Ubuntu
  • Window Manager: console/Gnome
  • BOfH
    • Профил
    • WWW
Re: Damerau-Levenshtein дистанция (PHP модул)
« Отговор #1 -: Jan 19, 2010, 11:49 »
За тези като мен които гледат като теле в железница ето какво е Damerau-Levenshtein дистанция

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

Внмимавай имам клещи за кабел
http://www.netsecad.com/
http://theregister.co.uk/odds/bofh/

VladSun

  • Moderator
  • Напреднали
  • *****
  • Публикации: 2166
    • Профил
Re: Damerau-Levenshtein дистанция (PHP модул)
« Отговор #2 -: Jan 19, 2010, 12:36 »
Аз го използвам за проверка на полета попълвани от потребителя:
- потребителят въвежда данните в полето;
- прави се проверка за вече въведени текстове с дистанция под определен праг;
- ако съществуват такива текстове, потребителя се предупреждава и може да коригира своя текст;

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

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

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

Имам идея тази функция да се пренапише по отношение на клавиатурните подредби - т.е. дистанцията на близки на клавиатурата букви да е по-малка от останалите.
« Последна редакция: Jan 19, 2010, 12:41 от VladSun »
Активен

KISS Principle ( Keep-It-Short-and-Simple )
http://openfmi.net/projects/flattc/
Има 10 вида хора на този свят - разбиращи двоичния код и тези, които не го разбират :P

VladSun

  • Moderator
  • Напреднали
  • *****
  • Публикации: 2166
    • Профил
Re: Damerau-Levenshtein дистанция (PHP модул)
« Отговор #3 -: Jan 19, 2010, 12:51 »
Честно казано, ми беше по-интересно как се пишат разширения за PHP :)
Има доста неща, които са ми трябвали, но ги няма.
Активен

KISS Principle ( Keep-It-Short-and-Simple )
http://openfmi.net/projects/flattc/
Има 10 вида хора на този свят - разбиращи двоичния код и тези, които не го разбират :P