【问题标题】:Phonetic Algorithm to search Usernames搜索用户名的语音算法
【发布时间】:2016-12-29 12:07:23
【问题描述】:

我让 DynamoDB 存储用户配置文件。这里的主键是一个 id。密钥必须是 id。 用户个人资料包含他的用户名、一组朋友、... 所以现在这是第一个问题:用户 A 想通过他的名字搜索用户 B。每次发生这种情况时,我都不想进行完整的 DynamoDB 扫描。 因为我已经有了一个 redis 服务器,所以我可以在那里存储 username-id-pairs。

那么现在真正的问题是:我要搜索什么? 例如,我的用户名可能是 Eric1996。我的一个朋友不记得最后一位数字,所以他只搜索 Eric19。 或者也许他只是忘记了开头的大写字母并搜索了 eric1996。在另一种情况下,他可能会拼错名称,例如 erik1996、erick1996、erich1996。

我稍微搜索了该主题,并了解到有一种叫做语音算法的东西,它可以根据单词的发音来搜索单词。这将修复上面的示例。 但是这样的算法也适用于其他用户名吗?您现在有些用户想出了真正的 3x0tic 名称,或者只是使用随机字母。我认识一个在网上自称是 dadddddx__7 的人。 我认为这比拼写纠正器要困难得多,因为用户可能有一个故意拼错的名字

【问题讨论】:

    标签: search redis amazon-dynamodb fuzzy-search phonetics


    【解决方案1】:

    Dynamodb 或 redis 不适合您的要求。 我建议对您的数据存储使用 dyanmodb 或 redis,并使用 Solr 或 ElasticSearch(或它们的 AWS 版本 Amazon CloudSearch,它同时提供 solr 和 elasticsearch) 您可以将用户配置文件存储在 dynamodb 中,并将可搜索字段存储在搜索存储中(您甚至可以将完整配置文件存储在搜索存储中)。 然后搜索功能,如拼写错误、根据分数对朋友进行排名等都很容易实现。

    【讨论】:

      猜你喜欢
      • 2020-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多