从词列表中查找包含在输入文本中的单词的有效方法

时间:2016-09-16 11:03:14

标签: mysql

我有一个单词表:

CREATE TABLE `wordlist` (
    `id` int(11) not null auto_increment,
    `word` varchar(255) not null,
    PRIMARY KEY(`id`)
);

有很多(数千)这样的条目:

| 1 | foo |
| 2 | bar |
| 3 | xyz |

我有一个输入文字Hello xyz, test me barhaha - 这应该从表中获得xyzbar。文本可以是几千字节长。

天真的解决方案是:

SET @text = 'Hello xyz, test me barhaha';
SELECT * FROM `wordlist` WHERE @text LIKE CONCAT('%', `word`, '%');

它不使用索引,LOCATE()/INSTR()也不会,并执行全表扫描。有没有办法加速这种搜索,理想情况下使用索引?

任何建议都将受到赞赏。

0 个答案:

没有答案