字典搜索词 - PHP和MySQL中的最佳性能

时间:2012-05-25 18:30:45

标签: php sql database memory-management dictionary

我想实现一个字典来搜索单词及其变形。 字典大小约为60MB,存储在txt文件中。

目前我正在将一个完整的字典(60MB)传递给变量,然后搜索有趣的单词。我无法抗拒一种不合适的印象(仅为字典在内存中分配60MB)

有人可以推荐其他解决方案吗?也许有其他方法可以在文件中搜索有趣的短语而不将其全部内容存储到内存中?或者将整个字典放入MySQL db会有所帮助(我可以将该字典切片并将​​每个单词放入带有附加id的db中,以识别来自同一根的不同单词之间的变化)

2 个答案:

答案 0 :(得分:3)

当然,将字典放入数据库会有所帮助。由于内部索引并作为守护进程驻留在系统内存中,数据库工作得更快;使用查询搜索变形也会更简单,更快速,更高效:

SELECT * FROM dictionary WHERE word LIKE "devel%"

会让你“开发”,“开发”,“开发”等等。还有很多其他的可能性。唯一的缺点是您必须安装数据库服务器。另一方面,如果20个用户同时连接,则在内存中加载整个txt文件将消耗超过1GB的内存,因为脚本每次都重新启动。

答案 1 :(得分:2)

将60mb放入内存进行搜索是荒谬的......数据库是这里唯一正确的答案。我昨天回答了关于词典的类似问题here

在数据库中获得该数据后,还要将全文搜索视为已解答here