我有一个有大量记录的MySQL数据库。对于每一条记录,都有一个名为“注释”的文本字段,我在下面列举了3个例子:
我的问题是:
我如何询问每个记录,看看“注释”字段的内容,然后计算出前20个单词是什么?
例如,使用上面的三个注释
我猜我需要使用PHP来遍历每个记录,使用“”(空格)爆出,删除逗号等字符&句号,然后存储结果,然后计数这些字符。
但我真的不确定最好的方法,也不知道如何处理复数,如“谢谢”和“谢谢”。因此,问题是:)
哑光
发布于 2013-11-23 14:43:51
因为它们都在一个列中,所以在这里不能进行太多的SQL过滤。
如果数据集不是太大(即php内存不足,那么您应该能够将其读取到php中并进行处理。
您可以使用explode在空间上拆分,并将数据作为一个巨大的数组处理。您可以使用preg_match函数进行字符串比较操作,请参阅:match -您应该花一些时间研究正则表达式。
如果在where子句中查找诸如SELECT (注释)之类的注释,比如‘% like %’,那么在where子句中使用SQL函数就更容易了,但是您必须手动这样做。
另外,您可能需要考虑将其转储到文件中,并使用基于unix的命令(如wc ),这些命令可以帮助您完成所追求的任务。如果您是在类似unix的环境中,也可以使用PHP与这些命令交互。
没有写好代码,我就不能告诉你更多了。
发布于 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这样的东西上运行这些查询会非常快,因为它是专门为它设计的。
https://stackoverflow.com/questions/20163619
复制相似问题