0

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

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

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

4

1 回答 1

0

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

于 2016-12-30T12:54:40.703 回答