0

ユーザーの重みに基づいて検索したい、たとえば...

私は次の検索パラメータを持っています...
場所
年齢
性別
性的指向
結婚状況
と他のいくつか...

ユーザーが重みを次のように設定した場合のように、各パラメータの重みを追加する必要があります...
場所の重みを10
性別から5
年齢3

にすると、検索結果は、性別や年齢よりも場所に関連性が高くなります。

私はそれを行う方法がわかりません!!! mysqlを使用してこれがどのように可能であるかを教えてください。

4

3 に答える 3

1

ブール値を数値として扱うため、mysqlではこれをかなり簡単に行うことができます。falseは0、trueは1です。生成されたクエリは次のようになります。

SELECT name from customers 
ORDER BY (location = 'Fort Worth, TX')*10 + (age > 21)*3 DESC 
LIMIT 0,20;

これにより、顧客ごとに「スコア」が作成されます。フォートワースの21歳以上の人は13ポイント、フォートワースの若い人は10ポイント、他の21歳以上の人は3ポイント、その他の人は0ポイントを獲得します。このスコアを降順で並べ替えて、最も一致するものが最初に表示されるようにします。

于 2012-11-08T16:42:05.120 に答える
0

私の知る限り、実際にはそれを行うことはできませんが、1つ以上の属性に基づいて結果に順序を付けることができます。最初の属性は優先度が最も高く、最後の属性は最も重要ではありません。 :

ORDER BY Location, Gender, Age
于 2012-11-08T08:40:12.630 に答える
0

検索エンジン向けのサイトのほとんどは使用されていますFULL-TEXT-SEARCH。と比較して非常に高速にselectなりLIKEます...1つの例といくつかのリンクを追加しました...それはあなたにとって役立つと思います...この全文検索にはいくつかの条件もあります...

ステップ1

CREATE TABLE articles (
    id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
    title VARCHAR(200),
    body TEXT,
    FULLTEXT (title,body)
);

ステップ2

INSERT INTO articles (title,body) VALUES
    ('MySQL Tutorial','DBMS stands for DataBase ...'),
    ('How To Use MySQL Well','After you went through a ...'),
    ('Optimizing MySQL','In this tutorial we will show ...'),
    ('1001 MySQL Tricks','1. Never run mysqld as root. 2. ...'),
    ('MySQL vs. YourSQL','In the following database comparison ...'),
    ('MySQL Security','When configured properly, MySQL ...');

ステップ:3
自然言語全文検索:

SELECT * FROM articles
    WHERE MATCH (title,body) AGAINST ('database');

ブール全文検索

SELECT * FROM articles WHERE MATCH (title,body)
     AGAINST ('+MySQL -YourSQL' IN BOOLEAN MODE);

このリンクを たどるviruspatel.netdevzone.zend.comsqlmag.comcolorado.eduen.wikipedia.org

于 2013-03-08T06:29:48.700 に答える