MySQL全文搜索列值?

时间:2010-01-06 07:25:12

标签: mysql full-text-search

我需要对另一个表中的列中的一大堆值进行全文搜索。由于MATCH()需要AGAINST()部分中的值,因此直截了当:“SELECT a.id FROM a,b WHERE MATCH(b.content)AGAINST(a.name)”失败并显示“AGAINST的参数不正确”。

现在,我知道我可以编写一个脚本来查询名称列表然后搜索它们,但我更愿意找出一个可以同时处理它的更复杂的查询。它也不需要快速。

想法?

感谢

2 个答案:

答案 0 :(得分:3)

不幸的是,http://dev.mysql.com/doc/refman/5.6/en/fulltext-search.html说:

  

搜索字符串必须是在查询评估期间保持不变的字符串值。例如,这排除了一个表列,因为每行可以有所不同。

如果您使用MySQL的FULLTEXT索引作为搜索解决方案,您似乎必须一次搜索一个模式。

我能想到的唯一选择是允许搜索您描述的许多模式是倒置索引。虽然这不像真正的全文搜索技术那样灵活或可扩展。

请参阅我的演示文稿http://www.slideshare.net/billkarwin/practical-full-text-search-with-my-sql

答案 1 :(得分:0)

我希望我的解决方案对您有用:

PREPARE stat FROM 'SELECT user_profession FROM users INNER JOIN professions ON MATCH(user_profession) AGAINST (?)';
SET @c_val = (SELECT prfs_profession FROM professions WHERE prfs_ID=1);
EXECUTE stat USING @c_val;