Я бы хотел создать функцию поиска, которая будет искать на основе совпадения "звуки как".
Например, допустим, у меня есть список компаний, который выглядит следующим образом (скажем, мы живем в мире Bizzaroтоже):
- Acme
- Уже намеки на цитирование LTD
- Весь готовый сайт с иллюзией INC
- Отдельное согласие
- Подтверждение зрения
(Или что-то схожее с именами ... George
или Jeorge
? "Я-путь" или "Йе-хова"?)
Когда кто-то ищетчто-то, что «звучит как» soundex("site") == S230
, они должны видеть результаты и для «Sight».
Поскольку большинство людей, которые уже использовали soudnex, уже знают, обычные совпадения подстрок, очевидно, этого не делают.
В своей голове я пытаюсь понять, как создать предложение WHERE, которое может соответствовать этому, поэтому вместо типичного WHERE company LIKE input
я бы хотел запустить soundex.Очевидно, что если я запускаю soundex для всего названия компании, я не смогу выполнять поиск по подстроке (например, пользователь, выполняющий поиск «ALL», никогда не будет соответствовать soundex «All ready»).Разделение Soundex на каждое слово также может быть бесполезным, поэтому я не уверен, что запускать все комбинации Soundex - хорошая идея ... или даже если это будет вычислительно выполнимо в базе данных с более чем 1000 записями.
По сути, я хочу иметь дело с тем, когда (в офисе или что-то в этом роде) Том говорит Салли: «Это имя было чем-то вроде Rebekkah Schwartzkopff », и его можно найти в фонетическом порядке на предмет нечеткого соответствия.
Очевидно, что мы столкнемся с проблемами с неанглоязычными компаниями из-за soudnex, но я собираюсь пойти на компромисс с этим.
Я бы хотел сделать это бездобавление чего-либо в базу данных или хранимой процедуры.