在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)
非常有帮助, 谢谢 – davka 2011-02-28 09:49:47