альтернатива levenshtein

У меня большой набор запросов, и я использую levenshtein для вычисления опечаток, теперь levenshtein заставляет mysql использовать все время процессора. Мой запрос - это полнотекстовый поиск + левенштейн в операторе UNION. sql1 - это мой текущий запрос, sql2 - это только полнотекстовый поиск, который работает быстро и не требует слишком много времени процессора, последний - leventhein, который достигнет максимума!

У кого-нибудь из вас есть альтернативный способ найти опечатки? Пожалуйста, не отвечайте на нормализацию данных, я подумал об этом, но это не применимо к моим данным, так как я не могу предварительно выполнить сопоставления / вычисления и создать отдельную таблицу с индексами.

            $sql1 = "(SELECT * FROM ci_sanctions_properties WHERE prop_type='LASTNAME' AND prop_value!='' AND MATCH(prop_value) AGAINST ('+usama bin laden' IN BOOLEAN MODE)) UNION (SELECT s.* FROM (SELECT levenshtein(prop_value, 'usama bin laden') AS dist, sanction_id, prop_type, prop_value FROM ci_sanctions_properties WHERE prop_type='LASTNAME' AND prop_value!='') s WHERE dist < 3) ORDER BY sanction_id";

        $sql2 = "SELECT * FROM ci_sanctions_properties WHERE prop_type='LASTNAME' AND prop_value!='' AND MATCH(prop_value) AGAINST ('+usama bin laden' IN BOOLEAN MODE) ORDER BY sanction_id";

        $sql3 = "SELECT s.* FROM (SELECT levenshtein(prop_value, 'usama bin laden') AS dist, sanction_id, prop_type, prop_value FROM ci_sanctions_properties WHERE prop_type='LASTNAME' AND prop_value!='') s WHERE dist < 3";
6
задан renevdkooi 29 January 2011 в 04:10
поделиться