具有分数的Php& MySQL匹配算法

时间:2012-10-28 02:10:08

标签: php mysql algorithm match matching

我在想如何用PHP和MySQL进行匹配,但我找不到。

例如,我们有一个mysql用户表,用户设置一些设置他们的配置文件,我们macth配置文件的百分比。

我们简单的mysql表:

CREATE TABLE IF NOT EXISTS `users` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `username` varchar(255) NOT NULL DEFAULT '',
  `password` varchar(255) NOT NULL DEFAULT '',
  `email` varchar(255) NOT NULL DEFAULT '',
  `gender` enum('M','F') NOT NULL DEFAULT 'M',
  `answer1` enum('Y','N') NOT NULL DEFAULT 'Y',
  `answer2` enum('Y','N') NOT NULL DEFAULT 'Y',
  `answer3` enum('Y','N') NOT NULL DEFAULT 'Y',
  `answer4` enum('Y','N') NOT NULL DEFAULT 'Y',
  `answer5` enum('Y','N') NOT NULL DEFAULT 'Y',
  `answer6` enum('Y','N') NOT NULL DEFAULT 'Y',
  `answer7` enum('Y','N') NOT NULL DEFAULT 'Y',
  `answer8` enum('Y','N') NOT NULL DEFAULT 'Y',
  `answer9` enum('Y','N') NOT NULL DEFAULT 'Y',
  `answer10` enum('Y','N') NOT NULL DEFAULT 'Y',
  PRIMARY KEY (`id`),
  UNIQUE KEY `username` (`username`),
  UNIQUE KEY `email` (`email`),
  KEY `gender` (`gender`)
) ENGINE=MyISAM DEFAULT CHARSET=latin5 AUTO_INCREMENT=1 ;

我们的行:

INSERT INTO `users` (`id`, `username`, `password`, `email`, `gender`, `answer1`, `answer2`, `answer3`, `answer4`, `answer5`, `answer6`, `answer7`, `answer8`, `answer9`, `answer10`) VALUES
(1, 'maleuser1', '123456', 'male1@male1.com', 'M', 'Y', 'N', 'Y', 'Y', 'N', 'N', 'N', 'Y', 'N', 'Y'),
(2, 'maleuser2', '123456', 'male2@male2.com', 'M', 'Y', 'Y', 'N', 'N', 'N', 'Y', 'Y', 'Y', 'N', 'Y'),
(3, 'femaleuser1', '123456', 'female1@female1.com', 'F', 'Y', 'Y', 'N', 'Y', 'Y', 'N', 'N', 'Y', 'N', 'Y'),
(4, 'femaleuser2', '123456', 'female2@female2.com', 'F', 'Y', 'Y', 'Y', 'N', 'Y', 'N', 'Y', 'N', 'N', 'Y');

你可以看到我们有2名男性和2名女性用户(通常他们将是数千名),我想搜索男性档案中最匹配的女性档案与百分比。

例如,我们将查询:

select username, blabla as percentage 
from users where gender = 'F' 
and ("here best matchmaking codes") 
and we show users; femaleuser1 and you matching %85.

我们只会显示大于%70的结果。

所以我正在谈论但我无法解决。

1 个答案:

答案 0 :(得分:0)

基本上你无法将苹果与橙子进行比较。您可以寻找任务并最大化工人和工作。在您的问题描述中,它将最大化女性和男性对。寻找匈牙利算法或edmonds v blossom算法。