Есть ли способ повысить отказоустойчивость функции SQL SOUNDEX при использовании для сопоставления нечеткой строки? Я использую это для поиска имен поставщиков. Что у меня есть:Повысить отказоустойчивость для SQL Soundex для соответствия нечеткой строки
WHERE
SOUNDEX(@SearchTerm) = SOUNDEX(s.Name)
Это работает в некоторой степени, но я хочу немного увеличить отказоустойчивость. Например:
SOUNDEX('test') = T230
SOUNDEX('tet') = T300
SOUNDEX('tets') = T320
SOUNDEX('tes') = T200
В идеале, я хотел бы, чтобы все эти примеры совпадали. Кроме того, небольшая проблема, когда имя поставщика состоит из 2-х слов и запросов пользователей по второму слову, это будет очевидно работать, так как походный зависит от первой буквы слова:
SOUNDEX('test supplier') = T230
SOUNDEX('supplier') = S146
Первоначально я использовал библиотеку сравнения нечетких строк в веб-приложении, которая использовала различные приближенные алгоритмы сравнения строк, но получается, что, когда 20 пользователей одновременно ищут для 5000+ поставщиков, для веб-сервера это слишком сложно. Теперь я пытаюсь сделать это в хранимой процедуре, чтобы база данных возвращала только результаты поиска, а не полный список поставщиков для поиска.