次のジョブ テーブルがあるとします。
`jobpost`
- name
- position
- is_featured (boolean)
ユーザーの役職に一致する、特定のユーザーに提案された仕事のリストを作成したいと思いますjobpost.position
(たとえば、会計士は経理の仕事を受け取ります)。
これを達成するための基本的なクエリは次のようになります。
SELECT name FROM jobpost WHERE jobpost.position IN (list of user positions) LIMIT 10
is_featured=True
また、取り上げられている ( ) ジョブが特別に重み付けされるようにしたいと考えています。次に、ランダムな数のジョブが選択される確率分布リストを作成する必要があります。このために、ジョブ名と確率を使用してタプルの Python リストを作成し、random.random()
. たとえば、(疑似コードで)次のようになります。
x = [('job 1', 0.2), ('job 2', 0.2), ('job 3', 0.2), ('job 4', 0.4)]
# pick three out of the list of jobs above
random.random.sample(x, 3)
これに関連して 3 つの質問があります。
これは正しいアプローチのように思えますか?
random
モジュール (または別のもの) を使用して、各オブジェクトが特定の確率を持つ n 個のオブジェクトを選択するにはどうすればよいですか?注目の仕事と注目されていない仕事の加重平均を与えるという点で、次のクエリは正しいアプローチでしょうか? そうでない場合、より良い方法は何ですか?
SELECT name, 1 * (CASE WHEN is_featured=True THEN % ELSE 1) as weighted_average FROM ...
これにより、ジョブ名と相対的な重みのタプルが得られます。