Фонетический алгоритм поиска имен пользователей

Я получил DynamoDB для хранения пользовательских профилей. Первичный ключ здесь - это идентификатор. Необходимо, чтобы ключ был идентификатором. Профиль пользователя содержит такую ​​информацию, как его имя пользователя, набор друзей... Итак, вот первая проблема: пользователь A хочет найти пользователя B по его имени. Я не хочу делать полное сканирование DynamoDB каждый раз, когда это происходит. Так как я уже получил сервер redis, я мог просто хранить там username-id-pair.

Итак, теперь настоящая проблема: что я ищу? Например, мое имя пользователя может быть Eric1996. Мой друг не помнит последние цифры, поэтому он просто ищет Eric19. Или, может быть, он просто забывает заглавную букву в начале и ищет eric1996. В другом случае он может неправильно написать имя, например, erik1996, erick1996, erich1996.

Я немного искал эту тему и узнал, что есть нечто, называемое фонетическими алгоритмами, которые ищут слова по тому, как они звучат. Это исправит пример выше. Но будут ли такие алгоритмы работать и для других имен пользователей? Теперь вы, некоторые пользователи, придумываете действительно 3x0tic-имена или просто используете случайные буквы. Я знаю парня, который называет его сам по себе, например, как dadddddx__7 онлайн. Я предполагаю, что это намного сложнее, чем корректор правописания, поскольку у пользователя может быть имя, которое написано с ошибкой специально

1 ответ

Dynamodb или Redis - неправильный инструмент для ваших требований. Я бы порекомендовал использовать dyanmodb или redis для своего хранилища данных и использовать Solr или ElasticSearch (или их AWS-версию Amazon CloudSearch, которая предоставляет как solr, так и asticsearch). Вы можете хранить свои профили пользователей в DynamodB, а также сохранять поля поиска в вашем магазине поиска (вы может даже хранить полные профили в поиске магазина). Тогда функции поиска, такие как орфографические ошибки, ранжирование друзей на основе некоторой оценки, легко реализовать.

Другие вопросы по тегам