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

标签 php sql database memory-management dictionary

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

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

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

最佳答案

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

SELECT * FROM 字典 WHERE word LIKE "devel%"

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

关于php - 字典搜索词 - 在 PHP 和 MySQL 中的最佳性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10759670/

相关文章:

php - Symfony 多对多不会在双方更新

php - 如何在 PHP 和 MySQL 中使用任意字符从表中搜索

php - 提供的 token 格式错误或无效

mysql - 获取一对多结果的所有结果

sql - 如何从 PostgreSQL 的表中找到值子集的平均值?

sql - 在忽略某些连续记录的同时计算值

php - 您如何检查 IP 范围是否在 PHP 中是私有(private)的?

php - 尝试让 INSERT 仅插入新数据

php - SQLSTATE[HY093] : Invalid parameter number: parameter was not defined - using greater than operator in SQL

database - 存储+元数据的跨平台框架?