使用 mysql 和 php 查找短语



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

上下文

  • 我有一个名为 phrases 的表,其中包含一个phrases列,其中存储了短语,每个短语由一到三个单词组成。
  • 我有一个包含 500 - 1000 个单词的text字符串

我需要突出显示text字符串中存在于我的phrases数据库表中的所有短语。

我的解决方案

我浏览短语列表中的每个短语并将其与text进行比较,但是短语的数量很大(100k),因此进行此匹配大约需要 2 分钟或更长时间。

有没有更有效的方法呢?

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

a) 编写一个C++库并使用扩展将其链接到 PHP。谷歌PHP-CPP。有一个框架可以让你做到这一点。

b) 在 C/C++ 内部,需要创建一个时间复杂度为 O(n) 的数据结构。n 是您正在搜索的短语的长度。通常,这称为尝试数据结构。这通常用于没有空格的单词[不是短语]。但是,你肯定可以自己写。

这是一个链接,其中包含单词实现。 又名字典。http://www.geeksforgeeks.org/trie-insert-and-search/

这需要相当多的内存,因为这个数字是100K。 公平地说,你需要一个大型系统。但是,当您寻求更好的性能时,内存往往是一种权衡。

替代方法只有菲律宾语。在这里,从文本输入中提取短语。将它们转换为哈希。您包含的表数据也应存储在哈希中。[需要巨大的内存]。 这里的性能将是火箭快,根据搜索又名 O(1)。所以,对于k个单词的句子。您的时间复杂度将为 O(K 因子)。

最新更新