首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用PHP (或查询)在MySQL数据库中使用超过数千行的常用单词

问使用PHP (或查询)在MySQL数据库中使用超过数千行的常用单词
EN

Stack Overflow用户
提问于 2013-11-23 14:37:25
回答 2查看 116关注 0票数 0

我有一个有大量记录的MySQL数据库。对于每一条记录,都有一个名为“注释”的文本字段,我在下面列举了3个例子:

  • “付款很快,谢谢。”
  • “爱你的谢谢”
  • “速递谢谢”

我的问题是:

我如何询问每个记录,看看“注释”字段的内容,然后计算出前20个单词是什么?

例如,使用上面的三个注释

  • “谢谢”出现了三次
  • “快”2次
  • 剩下的单词只能用一次。

我猜我需要使用PHP来遍历每个记录,使用“”(空格)爆出,删除逗号等字符&句号,然后存储结果,然后计数这些字符。

但我真的不确定最好的方法,也不知道如何处理复数,如“谢谢”和“谢谢”。因此,问题是:)

哑光

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-11-23 14:43:51

因为它们都在一个列中,所以在这里不能进行太多的SQL过滤。

如果数据集不是太大(即php内存不足,那么您应该能够将其读取到php中并进行处理。

您可以使用explode在空间上拆分,并将数据作为一个巨大的数组处理。您可以使用preg_match函数进行字符串比较操作,请参阅:match -您应该花一些时间研究正则表达式。

如果在where子句中查找诸如SELECT (注释)之类的注释,比如‘% like %’,那么在where子句中使用SQL函数就更容易了,但是您必须手动这样做。

另外,您可能需要考虑将其转储到文件中,并使用基于unix的命令(如wc ),这些命令可以帮助您完成所追求的任务。如果您是在类似unix的环境中,也可以使用PHP与这些命令交互。

没有写好代码,我就不能告诉你更多了。

票数 2
EN

Stack Overflow用户

发布于 2013-11-23 14:48:50

可能吧,也许。但是,MySQL并不适合这种类型的查询。如果您确实尝试过这样做,那么使用MySQL可能需要很长时间才能实际完成,如果您想频繁地运行这类查询,这是不切实际的。

我建议您使用专门为这类查询设计的内容来索引数据。某种Apache衍生工具会做得很好,例如,您可以使用Elasticsearch。下面是ES中描述要运行的查询类型的文档:http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-facets-terms-facet.html

与MySQL不同,在像ES这样的东西上运行这些查询会非常快,因为它是专门为它设计的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20163619

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档