2016-12-29 22 views
0

私はDynamoDBにユーザープロファイルを格納させました。ここの主キーはIDです。キーはIDである必要があります。 ユーザプロファイルには、ユーザ名、友人などの情報が含まれています。 ここで最初の問題があります。ユーザAはユーザBを自分の名前で検索します。これが起こるたびに、完全なDynamoDBスキャンを実行したくありません。 私はすでにredisサーバーを持っているので、そこにusername-id-pairsを保存することはできます。ユーザー名を検索する発音アルゴリズム

だから実際の問題:私は何を探しますか? たとえば、私のユーザー名はEric1996です。私の友人は最後の桁を覚えていないので、Eric19を検索するだけです。 または、彼は最初に大文字を忘れてeric1996を検索したかもしれません。それ以外の場合は、erik1996、erick1996、erich1996のような名前のスペルが間違っている可能性があります。

私はその話題を少し見つけて、聞こえる言葉で言葉を検索する音声アルゴリズムと呼ばれるものがあります。それは上記の例を修正します。 しかし、そのようなアルゴリズムは他のユーザー名にも有効でしょうか?今では、実際に3x0ticの名前をつけたり、ランダムな文字を使用したりするユーザーもいます。私は自分自身をdadddddx__7のようなものと呼んでいる人をオンラインで知っている。 これは、スペルの訂正者よりもはるかに難しいと思われます。ユーザの名前のスペルが間違っている可能性があるので、

答えて

0

Dynamodbまたはredisは不適切なツールです。 データストアにdyanmodbまたはredisを使用し、SolrまたはElasticSearch(またはAWSバージョンAmazon CloudSearch、solrとelasticsearchの両方を提供)を使用することをお勧めします ユーザープロファイルをdynamodbに保存し、検索可能フィールドを検索ストアに格納できます(完全なプロファイルを検索ストアに保存することもできます)。 次に、スペルミスのような検索機能を使用して、いくつかのスコアに基づいて友だちをランキングすることは簡単に実装できます。