Интересный случай! Я считаю, что нет правильного или неправильного ответа на это решение, и оно также будет зависеть от бюджета и временных ограничений. Каков ваш основной источник данных? Используете ли вы поддерживаемый источник для индексатора когнитивного поиска Azure, например SQL или CosmosDB. Как хранятся контакты? Имя и фамилия разделены или все в одном поле?
Поскольку вы в основном ищете руководство по использованию когнитивного поиска Azure, я опишу, как бы я попытался решить этот случай с помощью когнитивного поиска Azure. Надеюсь, это поможет вам решить, какая технология лучше всего подходит для ваших целей.
У меня нет опыта во всех случаях, пожалуйста, прокомментируйте этот пост, если у вас есть предложения лучше, и я обновлю его. Есть несколько похожих тем, в которых они используют разные технологии, но с тем же синтаксисом запросов Lucene и некоторыми из токенизаторов.
Фонетическое сходство: Иисус <=> Хейзей
Вы можете добавить PhoneticTokenFilter
, где вы можете выбрать кодер с наилучшими характеристиками для вашего конкретного случая.
Различия в транслитерации: Абдул Рашид <=> Абд аль-Рашид
Нечеткий поиск может быть вариантом, однако приведенный выше пример слишком отличается.
Альтернативные имена: Уильям <=> Будет <=> Билл <=> Билли
Вы можетеиспользуйте SynonymMaps
, если у вас есть эти данные.
Недостающие пробелы или дефисы: Мэри Эллен <=> Мэри Эллен <=> Мэри-Эллен
Вы можете использовать токенайзер , который удалит пробелы и знаки препинания / символы.
Сокращенные компоненты имени: McDonalds <=> McDonald <=> McD Вы можете использовать SynonymMaps
, если у вас есть эти данные. Тем не менее, я думаю, что нечеткий поиск уже может сделать эту работу.
Дополнительные токены имени: Joaquín Archivaldo Guzmán Loera <=> Joaquín Guzmán Вы можете использовать Поиск близости .
Варианты порядка имен:Park Sol Mi <=> Sol Mi Park
Также зависит от того, как хранятся поля, но я думаю, что поиск близости мог бы решить и этот случай.
Инициалы: JEСмит <=> Джеймс Эрл Смит
Возможно, вы можете использовать токенизатор в сочетании с нечетким поиском. Не уверен насчет этого случая.
Хорошее дополнениеявляется то, что вы также можете предложить предложения и / или автозаполнение , чтобы показать пользователю возможные результаты во время набора.
Мои ответы не решат все случаи напрямую, но это даст вам старт. Вам придется много тестировать и настраивать, поэтому вам следует взглянуть на ограничение по времени и бюджету.