在MySQL数据库中的输入字符串中搜索值

时间:2011-02-28 08:51:32

标签: mysql sql algorithm

我有一个职位描述数据库,我需要将这些描述与尽可能多的职位列表相匹配。在我的数据库中,我有一个主要职位作为关键(例如,飞机飞行员),以及几个替代标题(Jet Pilot,客机船长等)。

我的问题是,由于我必须处理的许多描述,标题包含太多信息 - 例如,列表中的样本标题可能是“747 Aircraft Pilot”。

虽然我知道我无法通过这种方式获得100%的准确度,但是我可以用任何方式将“747飞机飞行员”与我对“飞机飞行员”的描述相匹配,而无需对每个组合进行搜索字符串中的单词?例如,是否有算法可以在两个字符串之间分配匹配百分比,并返回具有特定百分比匹配的所有对,例如?

1 个答案:

答案 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)