タグ付けシステムを使用してアイテムをグループ化しています。基本的には、アイテムに特定のタグを追加して、そのタグの一部またはすべてを含む他のアイテムをデータベースから検索し、各アイテムの最大タグ数で結果を並べることで、それに類似するアイテムを見つけることができます。ここにいくつかの疑似コードがあります:他の商品を検索して関連商品を検索します。同じタグの
product: id, name, description
tags: id, name
product_tags: id, product_id, tag_id
map = new Map<int product_id, int occurances>
loop product_tags.where(tag_id: [1,2,3]) as |ptag|
map[ptag.product_id]++
end
sort map by max occurrences
return map.top(6)
私の質問は次のとおりです。このタスクを実行するための単一のmysqlクエリを作成するにはどうすればよいですか?私はこれを達成する別の方法にもオープンしています。
こんにちはとスタックオーバーフローを歓迎する:あなたが製品を必要とする場合
その後、あなたはこのような何かを行うことができます。ここでは、まず自分でそれを行って、何が起こるかを見てみましょう。多分あなたは既に持っています。さまざまなSQLクエリを試したときに何が起こったのですか?なぜあなたは結果に満足していませんでしたか?なぜあなたは既にやっていることを知っているすべての部分をやって始めてから、やっかいな部分に行きましょう...あなたが立ち往生している部分で私たちに戻ってきてください。どのような結果が得られ、代わりにあなたが期待しているものと比較しているのですか? –
私は今どのようにそれをやっているかを示す疑似コードを提供しました。私の方法は非常に効率的ではありませんが、データベースではなくサーバー上でソートを行うためです。 – user3642563
擬似コードで実際のエラーをデバッグするのは本当に難しいことです...コードの記述をデバッグしようとするようなものです。実際にSQLを試したことがあるなら、ここにSQLを含めてください(あなたの質問を編集し、コメントの書式がひどいので追加してください)。その後、私たちはあなたを助けるために始めることができます:) –