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

问题描述:

我有一个工作描述数据库,我需要将这些描述与尽可能多的工作列表进行匹配。在我的数据库中,我有一个主要职位作为关键(例如飞机驾驶员)和几个替代职位(喷气飞行员,机长等)。在MySQL数据库中搜索输入字符串中的值

我的问题是,在我必须处理的很多描述中,标题包含了太多信息 - 例如,列表中的示例标题可能是“747 Aircraft Pilot”。虽然我知道我无法获得100%的匹配精度,但是我可以通过任何方式将“747飞行员飞行员”与我的“飞行员驾驶员”描述进行匹配,而无需在每个组合上进行搜索字符串中的单词?例如,是否有一种算法可以分配两个字符串之间的匹配百分比,并返回具有特定百分比匹配的所有对,例如?

您可以在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) 
+0

非常有帮助, 谢谢 – davka 2011-02-28 09:49:47