3

タイトルがちょっと複雑なのはわかっていますが、私が得ているのは次のとおりです。

Web ページに表示されるさまざまな広告バナーのテーブルが保存されています。私は、ウェブサイトの購読者のニーズに応えるために、これらの広告を可能な限り最良の方法で並べ替える方法を考え出そうとしています. だから、私が念頭に置いている例はこれです:

テーブルには、広告名、ターゲット ユーザー、座標、人気度、表示のインセンティブがあります。現在ログインしているユーザーが該当するターゲット オーディエンスに等しい広告のみを表示したいとします。また、少なくとも人気度が 5 で、メンバーからの距離が 80 マイル未満のイベントのみを表示したいと考えています。メンバーとの距離が短いのもいいし、人気が高いのもいい。人気度の降順と距離の昇順でクエリの結果を並べ替えることができることはわかっています。

ただし、これは私がやろうとしていることには理想的ではありません。今説明した方法で行った場合、ユーザーから 6 マイル離れた場所にある結果が表示される可能性があるが、人気が 5 しかないという問題が発生する可能性があると思います。最初に表示される並べ替えられたクエリ結果。

私がクールだと思うのは、正規化加重乗数を使用して複合スコアを考え出し、それによってクエリ結果をソートすることです。たとえば、Popularity に 0.7 の重み係数を与え、Distance に 0.3 の重み係数を与えたいとします。ここで、クエリの結果は最大の複合スコア Desc で並べ替えられます。これが距離に対して機能するためには、実際の最小距離のスコアが 1 になるように、最小距離をクエリの結果のすべての距離値で割る必要があることを既に知っています。これは、アルゴリズムのこの部分。次に、もちろん、その 1 と他のすべての距離値に 0.3 を掛けて、加重乗数を有効にします。人気の場合はその逆

これは非常に複雑に聞こえると思いますが、どうにかして可能にする必要があります。以前はソルバーを使用して Excel スプレッドシートで実行していましたが、今では SQL に変換する必要があります。すべてのフィードバックは大歓迎です。

私が予想する問題は、Ads テーブルから座標を取得し、それを Web ページにログオンしているユーザーの現在の場所と比較することです。クエリは座標ではなく、ユーザーからの距離を要求するため、これはクエリ結果を表示する前に行う必要があります。さて、考えてみると。この部分のコーディングは難しくありません。構文のヘルプが必要なだけかもしれません。

4

2 に答える 2

2

[0 - 5] と距離の間の評価を得た場合、

これでソートしますか?((人気*0.7)*((距離MAX-距離)*0.3))

これらの重みをサーバー変数に設定することもできますが、これは単なる提案です(私のExcelドキュメントで解決しました)

select field1, field2, field3
from stuff
order by ((popularity*0.7)*((distanceMAX-distance)*0.3)) desc
于 2013-03-14T08:51:10.660 に答える
1

あなたはこのようなことを試すことができます

SELECT ad.*, ((ad.popularity * 0.7) + (ad.distance * 0.3)) AS relevance
FROM ad
WHERE popularity >= 5
ORDER BY relevance, popularity DESC

テストされていませんが、もう少し実験するのに役立つかもしれませんか?

于 2013-03-14T08:49:38.197 に答える