Например, если у нас есть «клавиатура» и «ekyboard», тогда ответ должен быть 6 совпадающих символов (..yboard). Мне нужна не функция Левенштейна, а количество символов, соответствующих одному и тому же месту в строках.
Я хотел бы ORDER BY по проценту совпадающих символов (75 % в примере с клавиатурой) DESC.
Справочная информация:
Мне нужно искать существительные.
Сначала исходная строка (str).
/>А затем сгенерированная строка, содержащая классы символов регулярных выражений («keyboard» => «[ck][eij][ijy][bp][ao][ao][.][dt]» => r_str).
(Для странных классов символов это смесь шведского (неправильного) написания и произношения).
Затем Я ОБЪЕДИНЯЮ два оператора SELECT.
/>Первый ищет строку в адресе (
Код: Выделить всё
LIKE "%str%"Второй ищет r_str в адресе и должен установить приоритет=2, процент=(процент совпадающих символов по сравнению со строкой), loc=start позицию.
Затем ГРУППИРУЙТЕ ПО существительному ПОРЯДОК ПО приоритету ASC, индексу ASC, проценту DESC.
Код: Выделить всё
SELECT * WHERE noun LIKE "%str%", priority AS 1, percentage AS 100, LOCATE("str", noun) AS loc
UNION
SELECT * WHERE noun RLIKE "r_str", priority AS 2, percentage AS ???, REGEXP_INSTR(noun, "str") AS loc
GROUP BY noun
ORDER BY priority, percentage DESC, loc;
Подробнее здесь: https://stackoverflow.com/questions/798 ... ame-length
Мобильная версия