Faran Saleem Ответов: 2

Нечеткое сопоставление в SQL через имя


Всем привет,

Я создаю программу, в которой мне нужно сопоставить похожие имена, чтобы получить результаты.
Теперь проблема здесь в том, что имена могут быть написаны по-разному или могут быть в другом порядке.
Я в основном сопоставляю названия отелей вместе и давайте скажем например,
есть один отель Мариотт Теперь это название может быть написано по-разному, и так как отель находится в разных странах, поэтому каждая страна может иметь различное сочетание, скажем, например, в Дубае он известен как Mariott Hotel, Дубай,
в Австралии он известен как Отель Mariott, Австралия, или где-то оно пишется с одним т, любить Отель "Мариот".
На самом деле программа должна соответствовать всем приведенным выше примерам и отображать результаты. Итак, как я могу достичь этого с помощью SQL?
Нужна твоя помощь.
Я был бы вам очень признателен.

большое спасибо

Что я уже пробовал:

Попробовал поискать в интернете, но безрезультатно

0x01AA

Может быть, заглянем сюда за идеями: Запрос с полнотекстовым поиском[^]

RedDk

Сначала узнайте, что такое запрос с использованием TSQL.

2 Ответов

Рейтинг:
1

JonPoley3

Это трудная проблема, потому что многие примеры, которые вы приводите, очевидны для людей, но менее очевидны для машин. Но вот некоторые мысли, которые могут помочь:

SELECT
  SoundEx( 'Mariott' ),
  SoundEx( 'Mariot' )


такие же результаты дает "М630". Вам нужно установить MDS (стоит проверить, что вам нужно, так как я не эксперт), чтобы использовать это. Вы получите несколько ложных срабатываний и несоответствий, но это довольно простое начало для вашей проблемы.

Что касается проблемы порядка слов (SoundEx поможет только с орфографическими вариациями и звуками, похожими на проблемы), я бы предложил просто разделить название отеля на составляющие его слова и запустить soundEx для каждого отдельно.

Надеюсь, это поможет,

Джон


Faran Saleem

Спасибо за ваш ответ ... но дело в том, что я провожу матч по одной единственной колонке.. я не ввожу никакого слова.. как будто есть таблица, и у нее есть столбец hotel_names, так что мне нужно запустить совпадение по этому столбцу, и он должен отображать аналогичные результаты.. и данные ежедневно загружаются в эту таблицу.

Рейтинг:
1

Peter Leow

Воспользуйся LIKE (Transact-SQL)[^], например

WHERE hotelname LIKE '%Mariot%'