使用mysql和php查找短语

使用mysql和php查找短语,php,mysql,search,full-text-search,phrases,Php,Mysql,Search,Full Text Search,Phrases,我正在做一个项目,我需要你在数据库查询中的建议。我正在使用PHP和MySQL 上下文 我有一个名为短语的表,其中包含一个短语列,其中存储有短语,每个短语由一到三个单词组成。 我有一个包含500-1000个单词的文本字符串 我需要突出显示文本字符串中存在于短语数据库表中的所有短语 我的解决方案 我检查了短语列表中的每个短语,并将其与文本进行比较,但是短语的数量很大,为100k,因此需要大约2分钟或更长的时间进行匹配 还有更有效的方法吗?我将重点介绍如何使用100K值进行比较。这需要两个步骤 编写一

我正在做一个项目,我需要你在数据库查询中的建议。我正在使用PHP和MySQL

上下文

我有一个名为短语的表,其中包含一个短语列,其中存储有短语,每个短语由一到三个单词组成。 我有一个包含500-1000个单词的文本字符串 我需要突出显示文本字符串中存在于短语数据库表中的所有短语

我的解决方案

我检查了短语列表中的每个短语,并将其与文本进行比较,但是短语的数量很大,为100k,因此需要大约2分钟或更长的时间进行匹配


还有更有效的方法吗?

我将重点介绍如何使用100K值进行比较。这需要两个步骤

编写一个C++库并使用扩展将其链接到PHP。谷歌PHP-CPP。有一个框架允许您这样做

b在C/C++中,您需要创建一个时间复杂度为On的数据结构。n是您正在搜索的短语的长度。通常,这称为数据结构。这通常用于没有空格的单词[而不是短语]。但是,你当然可以自己写

下面是一个链接,其中包含单词implementation。又名词典。

这需要相当大的内存,因为数字是100K。公平地说,你需要一个大系统。但是,当您想要获得更好的性能时,内存往往是一种折衷

替代方法
只有PHP。在这里,从文本输入中提取短语。将它们转换为散列。您包含的表数据也应该存储在散列中。[需要巨大的内存]。这里的性能将是火箭般的快,每搜索又名O1。所以,对于一个由k个单词组成的句子。您的时间复杂度将是OK阶乘

你能预先匹配文本并提前将其缓存到某个地方吗?这样用户就不会觉得慢了。