Mysql 如何有效地在数据库表中搜索一段文本中所有子字符串的组合?

Mysql 如何有效地在数据库表中搜索一段文本中所有子字符串的组合?,mysql,database,algorithm,optimization,Mysql,Database,Algorithm,Optimization,因此,假设我有一个MySQL表,其中包含数十万个标记/关键字,以及一段用户提供的任意大小的文本,那么从这段文本中提取所有关键字的最有效方法是什么?关键字可以是数据库表中存在的一个或多个单词 我最需要的是一种有效的算法/策略 作为一个例子,考虑这个随机段落:8月21日是伟大的美国日食,第一次日全食触摸美国大陆自1979和自创建ReDIT以来的第一次。为了科学,我们需要你的帮助来收集动物对日食反应的录像 全文索引可能是一个常见的建议,但在这种情况下它不会有帮助,因为您试图在输入中查找关键字,而不是在

因此,假设我有一个MySQL表,其中包含数十万个标记/关键字,以及一段用户提供的任意大小的文本,那么从这段文本中提取所有关键字的最有效方法是什么?关键字可以是数据库表中存在的一个或多个单词

我最需要的是一种有效的算法/策略


作为一个例子,考虑这个随机段落:8月21日是伟大的美国日食,第一次日全食触摸美国大陆自1979和自创建ReDIT以来的第一次。为了科学,我们需要你的帮助来收集动物对日食反应的录像 全文索引可能是一个常见的建议,但在这种情况下它不会有帮助,因为您试图在输入中查找关键字,而不是在已经索引的文本中。与在多个索引文档中搜索一个单词相反

您可以通过以下方式进行搜索:

SELECT t.tag
FROM tags AS t
WHERE ? LIKE CONCAT('%', t.tag, '%')
将用户输入的段落绑定到参数占位符

会很慢的。这可能需要10-30秒,这取决于服务器的马力和其他并发负载

但好消息是,如果将结果保存在多对多表中,则每次输入只需执行一次