我有一个职位描述数据库,我需要将这些描述与尽可能多的职位列表相匹配。在我的数据库中,我有一个主要职位作为关键(例如,飞机飞行员),以及几个替代标题(Jet Pilot,客机船长等)。
我的问题是,由于我必须处理的许多描述,标题包含太多信息 - 例如,列表中的样本标题可能是“747 Aircraft Pilot”。
虽然我知道我无法通过这种方式获得100%的准确度,但是我可以用任何方式将“747飞机飞行员”与我对“飞机飞行员”的描述相匹配,而无需对每个组合进行搜索字符串中的单词?例如,是否有算法可以在两个字符串之间分配匹配百分比,并返回具有特定百分比匹配的所有对,例如?
答案 0 :(得分:1)
您可以在MySQL中使用全文搜索功能。可以在这里找到一个很好的教程:
http://devzone.zend.com/article/1304
http://forge.mysql.com/w/images/c/c5/Fulltext.pdf
使用
添加全文索引时ALTER TABLE jobs ADD FULLTEXT(body, title);
你可以这样查询:
mysql> SELECT id, title, MATCH (title,body) AGAINST
-> ('Aircraft Pilot')
-> AS score
-> FROM jobs WHERE MATCH (title,body) AGAINST
-> ('Aircraft Pilot');
+-----------------------------+------------------+
| id | title | score |
+-----------------------------+------------------+
| 4 | 747 Aircraft Pilot ... | 1.5055546709332 |
| 6 | Aircraft Captain ... | 1.31140957288 |
+-----------------------------+------------------+
2 rows in set (0.00 sec)