我在 MySQL 5.6 中有以下表结构:
CREATE TABLE `dictionary` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`word` varchar(80) NOT NULL,
PRIMARY KEY (`id`),
KEY `word` (`word`)
) ENGINE=InnoDB;
CREATE TABLE `sentences` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`sentence` varchar(254) NOT NULL,
PRIMARY KEY (`id`),
FULLTEXT KEY `sentencefulltext` (`sentence`)
) ENGINE=InnoDB;
我想返回包含字典中任何单词的所有句子。我真的不关心单词边界,它可以是一个基本的子字符串。
全文 MATCH AGAINST 似乎只适用于字符串,而不是从另一个表中选择。至于 LIKE 和 REGEXP,它们似乎需要很长时间,因为我的字典中有大约 500k 行句子和 50k 行单词。
一种选择是在程序中逐行浏览字典并在每一行上调用一个选择,但我宁愿在单个 SQL 语句中执行此操作。
如果有人有任何想法,请分享。
谢谢!