Соответствие строкового образца для Limited, Ltd, Incorporated, Inc, и т. Д.
Мы прилагаем много усилий для согласования около 1000 дубликатов названий производителей и 1 000 000 дубликатов номеров деталей. Одна вещь, которая возникла, - это как "сопоставить" такие вещи, как "Limited" и "Ltd." vs. "Ltd"
Цель состоит в том, чтобы приложение согласовало эти сопоставленные элементы в стандартном формате. Так:
ACME Ltd. ACME Limited ACME Ltd
Должны ли все быть согласованы с ACME Ltd.
Это также будет использоваться для предотвращения ввода дополнительных дубликатов в будущем.
Любые предложения о том, как выполнить это сопоставление с шаблоном в SQL Server? Известны ли алгоритмы для поиска элементов с отображенными эквивалентами и т. Д.?
Спасибо!
Эрик.
2 ответа
Как насчет таблицы, которая перечисляет, что вы хотите в одном столбце и варианты в следующем?
Ltd Limited
Ltd Ltd.
St Street
St Str.
Затем, если вы найдете совпадение во втором столбце, вы измените его на первый. Это может занять несколько итераций, поскольку вы найдете другие альтернативы.
Используя полнотекстовый поиск SQL Server, вы можете использовать синонимы:
Для каждого полнотекстового языка SQL Server также предоставляет файл, в котором вы можете при желании определить языковые синонимы для расширения области поисковых запросов (файл тезауруса).
В вашем случае вы можете добавить раздел, как показано ниже:
<expansion>
<sub>Limited</sub>
<sub>Ltd</sub>
<sub>Ltd.</sub>
</expansion>
Вот ссылка, которая более подробно описывает, как изменить файл тезауруса. Это может работать на то, что вы пытаетесь сделать...
SQL Server также предлагает ограниченное сопоставление с образцом, используя LIKE
, Я бы порекомендовал просмотреть варианты, которые он предлагает, чтобы увидеть, будут ли они достаточными для ваших нужд.
Если LIKE
недостаточно, вы всегда можете взглянуть на создание хранимой процедуры CLR или UDF, которые позволят вам использовать регулярные выражения. Это позволит вам соответствовать гораздо более сложным шаблонам...