Damerau-Levenshtein Distance for MySQL

Пытаюсь реализовать на сайте "нечеткий" поиск по формуле Дамерау-Левенштейна.

Взял PHP исходники с гитхаба.

Получаю ошибку "Mysql query error: (1305) FUNCTION dbname.DAMLEVLIM does not exist (400)".

Где взять эту функцию DAMLEVLIM?


Ответы (2 шт):

Автор решения: becouse

Нужно перекомпилировать MySQL для поддержки этой функции. Вот инструкция. Вот ссылка на github с описанием проблем.

→ Ссылка
Автор решения: crazydrummer

Вот что сработало у меня (Centos 7, VMBitrix):

  1. Скачал репозиторий отсюда: https://github.com/ifsnop/damlev
  2. Разархивировал и залил на сервер в папку /usr/lib64/mysql/plugin/damlev-master (без разницы какая папка)
  3. В файле Makefile изменил "-L/usr/lib/mysql \" на "-L/usr/lib64/mysql \" (Папку с плагинами можно найти так: SHOW VARIABLES WHERE Variable_Name LIKE "plugin_dir";)
  4. Запустил make в папке, куда закачал репозиторий. В папке lib появился файл mysqldamlevlim.so
  5. Закинул файл mysqldamlevlim.so в папку с плагинами MySQL (/usr/lib64/mysql/plugin)
  6. Запустил mysql и выполнил там следующие комманды:
    DROP FUNCTION IF EXISTS damlevlim;
    CREATE FUNCTION damlevlim RETURNS INT SONAME 'mysqldamlevlim.so';
    SELECT * FROM mysql.func;
  1. В ответе убедился, что библиотека установилась:

damlevlim installed successfuly

→ Ссылка