2

問題

テーブルに5つのアイテムがあります[1]。各アイテムには4つの属性(赤、緑、青、黄色)があります。
各属性には、1から9までのスコアを付けることができます[2]

私のWebサイトで検索を実行する場合、ユーザーは各属性に1〜9のスコアを付けることで、各属性が検索結果にどの程度関連しているかを指定できます。

ユーザーの好みに基づいて結果を計算して並べ替えるには、どのアルゴリズムを使用する必要がありますか?

資力

[1] -CREATE TABLE items( id INT NOT NULL AUTO_INCREMENT , name VARCHAR(128) , red INT , green INT , blue INT , yellow INT , PRIMARY KEY (id) );

[2] -INSERT INTO items (NAME, red, green, blue, yellow) VALUES ('Random 1', 4, 1, 9, 4), ('Random 2', 1, 1, 2, 9), ('Random 3', 5, 7, 6, 3), ('Random 4', 2, 2, 8, 1);

4

4 に答える 4

3

検索句読点をフィールドとして計算し、それでクエリを並べ替えます

SELECT *, (red * @rw) AS w1, (green * @gw) AS w2, (blue* @bw) AS w3, (yellow * @yw) AS w4, (w1 + w2 + w3 + w4) AS result 
  FROM items ORDER BY result DESC; 

@rw =>赤いウェイト、@bw=>青いウェイトなど...

于 2011-09-19T15:51:20.530 に答える
1

合計するだけです

<?php
require('connect.php') //your db connection data
$redWeight=$_REQUEST['howeverYouPassedTheRedWeighting'];
$blueWeight=$_REQUEST['howeverYouPassedTheBlueWeighting'];
$yellowWeight=$_REQUEST['howeverYouPassedTheYelloWeighting'];
$greenWeight=$_REQUEST['howeverYouPassedTheGreenWeighting'];
$query="SELECT name, ( red*$redWeight+green*$greenWeight+blue*$blueWeight+yellow*$yellowWeight ) AS value FROM items ORDER BY value DESC";
$res=mysql_query($query);
//etc.
?>
于 2011-09-19T15:54:17.080 に答える
1

申し訳ありませんが、私は直接の答えはありません。これは非常に興味深いトピックです。ユークリッド距離、またはピアソン相関に関連するものを使用できます。コレクティブインテリジェンスに関連する本で詳細を見つけることができます。

もちろん、これらのようなものを実装することはより困難ですが、あなたの結果ははるかに正確で正確になります。私はこれらの本をお勧めします:

インテリジェントWebのアルゴリズム

集合知プログラミング:スマートWeb2.0アプリケーションの構築

于 2011-09-19T16:00:52.173 に答える
0

私はあなたが正しい意味を理解しているかどうかはわかりませんが、これはどうですか?

$user_defined_relevance = array ('red' => 1, 'blue' => 3, 'green' => 2, 'yellow' => 7);
arsort($user_defined_relevance); //this sorts the array by value descending while maintaining index association

$query = 'SELECT * FROM items ORDER BY '.implode(array_keys($user_defined_relevance), ',  DESC');
//will make SELECT * FROM items ORDER BY yellow DESC, blue DESC, green DESC, red DESC;
mysql_query($query);
 ...
于 2011-09-19T15:55:49.657 に答える