基于用户权重的Mysql搜索

时间:2012-11-08 08:23:02

标签: mysql search

我想根据用户权重进行搜索,例如......

我有以下搜索参数...
位置
年龄
性别
性定向
婚姻状态
还有其他几个......
要求是为每个参数添加权重,例如,如果用户将权重设置为...
位置重量为10
性别到5
年龄到3岁
那么搜索结果应该与位置更相关,而不是性别,甚至更小的年龄
我不知道该怎么做!请告诉我这是如何使用mysql的。

3 个答案:

答案 0 :(得分: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分。我们按降序排序,以便首先显示最佳匹配。

答案 1 :(得分:0)

据我所知你不能真正做到这一点,但你可以根据一个或多个属性给出结果的顺序,其中第一个属性是具有最高优先级的属性,最后一个属性是最少的重要的,例如:

ORDER BY Location, Gender, Age

答案 2 :(得分:0)

大多数搜索引擎定向网站均使用FULL-TEXT-SEARCH。     与selectLIKE相比,它会更快...     我添加了一个示例和一些链接......     我认为这对你有用......     在这个全文搜索中也有一些条件...

<强> STEP:1

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

<强> STEP: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 ...');

STEP:3
自然语言全文搜索:

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

布尔全文搜索

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

浏览此链接 viralpatel.netdevzone.zend.comsqlmag.comcolorado.eduen.wikipedia.org

相关问题