2011-08-07 18 views
-2

キーワードを検索するテーブル/コンテンツタイプが複数あり、 UI。複数のテーブルを検索して偶数の検索結果を表示するか、検索結果の数を増やす

テーブル(人物、ページ、記事、場所)が4つあり、結果スロットが12個あるとします。検索で各表に3つ以上のヒットが戻されると、各表に3つの結果が表示されます。

他に3つ未満の結果がある場合、テーブルのスロット数を増やすアルゴリズム(できればPHP)が必要です。スロット(および結果)が残っている限り、他のテーブルの結果をスロットに「埋め込む」必要があります。

人:6つの ページ:3件の 記事:2つの 場所:1つの

感謝!

+0

どのテーブルにも関係がありますか? –

+0

申し訳ありませんが、ここでは人々があなたのためにコーディングする場所ではありません。あなたが立ち往生しているときや問題があるときには、あなたのコードを返すべきです。我々はあなたを助けるためにお互いに戦っているだろう:)しかし誰もあなたのための完全なコードを書くつもりはない、あなたはいくつかの努力と研究を示す必要があります。 http://stackoverflow.com/faqに従って –

答えて

0

興味深い質問です。

あなたは4つのカテゴリA、B、C、Dが優先順位の順番であると言います。

Aの行数を取得し、B、C、D


関数分(3、X)が3より小さいとX.すぐ

によってスロットの初期割り当てを行う返します
Alloc_A=min(3,A) 
Alloc_B=min(3,B) 
Alloc_C=min(3,C) 
Alloc_D=min(3,D) 

残りのスロットは、次いで、次のとおり

Rem_A=A-Alloc_A 

など。


空きスロットの数は、以下のとおりです。残りのスロットを埋めるために、あなたはremainaingの数に比例してそれを行うことができたよう free_slots = 12-Alloc_A-Alloc_B-Alloc_C-Alloc_D

は、記事。割合で割り当てることができます。

Alloc_A+=round(Rem_A/(Rem_A+Rem_B+Rem_C+Rem_D)) 
Alloc_B+=round(Rem_B/(Rem_A+Rem_B+Rem_C+Rem_D)) 

などです。たとえば、空きスロットが4つあり、Bに9、Dに3がある場合、これはBに3/4スロット、Dに1を割り当てます。しかし、bがDの10倍の場合、これは不公平になります。あなたは3倍の最小値をとって他のものを制限することができます。

関連する問題