繁体   English   中英

使用mysql和php查找短语

[英]Find phrases using mysql and php

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

上下文

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

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

我的解决方案

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

有没有更有效的方法?

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

a)编写一个C ++库,并使用扩展将其链接到PHP。 Google PHP-CPP。 有一个框架可让您执行此操作。

b)在C / C ++内部,您需要创建一个时间复杂度为O(n)的数据结构。 n是您要搜索的短语的长度。 通常,这称为trys数据结构。 通常,这用于没有空格的单词(而非短语)。 但是,您当然可以编写自己的。

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

因为数量为100K,所以这需要大量的内存。 公平地说,您需要一个大型系统。 但是,当您寻求更好的性能时,内存往往是一个折衷方案。

替代方法仅PHP。 在这里,从文本输入中提取短语。 将它们转换为哈希。 您所包含的表数据也应存储在哈希中。 [需要巨大的内存]。 每次搜索又称为O(1),此处的性能将很快提高。 因此,对于k个单词的句子。 您的时间复杂度将为O(K阶乘)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM