0

我需要有关文本分析的建议。该程序是用php编写的。

我的代码需要接收一个 URL 并将站点单词与数据库进行匹配并寻找匹配项。

棘手的部分是这些词并不总是像它们出现在文本中那样写在数据库中。

例子:

假设我的数据库有这些值: Word = letters

该网站有:罗嗦的东西

我应该输出: Letters thing

在每个尝试将搜索到的单词与数据库匹配之后,我的代码都会生成几个正则表达式。

对于每个未找到的单词,我对数据库进行 8 次查询。大多数单词都不匹配,所以当我们谈论一个包含数百个单词的整个网站时,我的 CPU 水平会飞跃。

我考虑过存储在数据库中找不到的每个单词,因为它们出现(HD 成本低于 CPU),或者可能制作一个数组或字典来存储所有这些。

我真的对这个项目感到困惑。它应该为大量用户提供服务,使用当前代码,服务器将在 10-20 个用户请求后终止。

有什么想法吗?

编辑:搜索到的单词不是英文单词,代码在 windows 2008 服务器中运行

4

4 回答 4

1

实现一个特里并计算莱文斯坦距离?有关实施的详细演练,请参阅此博客:http ://stevehanov.ca/blog/index.php?id=114

于 2011-07-25T21:05:29.213 回答
0

在我看来,这就像Sphynx & stemming的工作。

于 2011-07-25T17:50:03.613 回答
0

可能是愚蠢的问题,但您是否考虑过在 SQL 查询中使用 LIKE 子句?像这样的东西:

$sql = "SELECT * FROM `your_table` WHERE `your_field` LIKE 'your_search'":

我通常会发现,每当我必须对查询的返回值进行过多的字符串操作时,我都可以在 SQL 端更轻松地完成它。

于 2011-07-25T19:35:53.583 回答
0

谢谢大家的答案。不幸的是,没有一个答案对我有帮助,也许我不够清楚。

我最终通过创建一个包含数据库上所有单词(大约 6000 个单词)的哈希表并检查哈希而不是数据库来解决这个问题。

代码以 4 秒的执行时间开始,现在是 0.5 秒!:-)

再次感谢

于 2011-07-27T12:44:01.160 回答