1

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

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

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

4

2 回答 2

4

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

SELECT * FROM dictionary WHERE word LIKE "devel%"

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

于 2012-05-25T18:41:58.247 回答
2

将 60mb 放入内存中进行搜索是可笑的……数据库是这里唯一正确的答案。我昨天在这里回答了一个关于字典的类似问题。

将其放入数据库后,还请查看此处回答的全文搜索。

于 2012-05-25T18:40:56.173 回答