针对列值的MySQL全文搜索?

问题描述 投票:10回答:2

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

现在,我知道我可以编写一个脚本来查询名称列表,然后搜索它们,但是我宁愿制定一个更复杂的查询来一次性处理所有名称。也不需要太快。

想法?

谢谢

mysql full-text-search
2个回答
4
投票

不幸的是,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


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;
© www.soinside.com 2019 - 2024. All rights reserved.