【发布时间】:2012-08-18 16:14:26
【问题描述】:
每隔几分钟就会有大约 500 个段落被提交到名为“内容”的表中的数据库中(这个数字在几个月内将超过 2,500 个)。 还有一个名为“Keywords”的表有 4,000 多行(预计将增长到 10,000 多行)。
Keywords
+------------+-------------------+
| Keyword_id | keyword |
+------------+-------------------+
| 1 | "Venture Capital" |
| 2 | "Financing" |
+------------+-------------------+
问题是:在传入的文本段落中交叉引用每个关键字以查看是否匹配的解决方案的最佳方法是什么?
因为我不关心段落中哪里有匹配(我唯一关心的是有匹配);
if(preg_match()){} 可能有效,但即使在低端,也就是 2,000,000 次,您会在段落中搜索关键字。
另外,如果我错了,请纠正我,preg_match 非常昂贵。
我想到的一个可能是将关键字数组保留在缓存中,而不必为每一行调用数据库。 我认为这肯定有助于加快速度。
我不关心这只存在于 PHP 中。 如果应用程序的这一部分需要使用 Python(如果我错了,请纠正我,但我听说 Python 在解析文本方面要便宜得多),那么我全都听好了。
【问题讨论】:
-
你为什么不直接使用数据库呢?许多 RDBMS 具有强大的全文功能,并且在这方面做得非常快......
-
嗯,很有趣。既然我不是数据库专家,那会不会在 mysql 中做诸如“like”语句之类的事情?如果我离得很远,我很抱歉;我总是更多地处理 php 方面的事情,而不是 DB。
标签: php