我有一张数百个健身目标的表格。以下是一个子集。
如何找到类似健身目标的匹配?例如,#1和#4都想减肥,而#3和#5都希望在7分钟内跑完一英里。此外,#2,#3和#5都希望运行得更快。如何有效地搜索健身目标表以确定哪些目标相似?目标存储在mysql表中。我正在寻找PHP的实现。
答案 0 :(得分:1)
嗯,你可能会标记一些关键字,如“重量”,“磅”,“磅”,以后可以由管理员检查
答案 1 :(得分:1)
您可以通过以下两种方式之一完成此操作:
在PHP内部,您可以使用similar-text功能。然而,这是一种非常普通的方式。
更好的方法是使用Mysql's full text search。问题是您不能比较数据库中的两行,而是比较表中数据的文本字符串:
示例基于:
mysql> CREATE TABLE articles (
-> id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
-> title VARCHAR(200),
-> body TEXT,
-> FULLTEXT (title,body)
-> ) ENGINE=MyISAM;
Query OK, 0 rows affected (0.00 sec)
mysql> 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 ...');
Query OK, 6 rows affected (0.00 sec)
mysql> SELECT id, MATCH (title,body) AGAINST ('Tutorial')
-> FROM articles;
+----+-----------------------------------------+
| id | MATCH (title,body) AGAINST ('Tutorial') |
+----+-----------------------------------------+
| 1 | 0.65545833110809 |
| 2 | 0 |
| 3 | 0.66266459226608 |
| 4 | 0 |
| 5 | 0 |
| 6 | 0 |
+----+-----------------------------------------+
6 rows in set (0.00 sec)
这将根据最佳匹配对结果进行排名。
您可以很好地使用它从数据库中获取一行,然后使用它来查找匹配最佳的行。
答案 2 :(得分:0)
这只是我在黑暗中戳,但你可以有多个布尔值。
runFaster=true;
loseWeight=true;
specificDistance=true; //Do they have a specific distance in mind?
和一些定量值:
weightLoss=3; //lbs
speedIncrease=1 //km/h
runDistance=7 //miles
类似的东西?