4

我正在构建一个包含大约 10,000 条记录的 MySQL 数据库。每条记录将包含一个文本文档(大多数情况下是几页文本)。我想在整个数据库中进行各种 n-gram 计数。我已经用 Python 编写了算法,可以针对包含大量文本文件的目录执行我想要的操作,但要做到这一点,我需要从数据库中提取 10,000 个文本文件——这会产生性能问题。

我是 MySQL 的新手,所以我不确定它是否有任何内置功能可以进行 n-gram 分析,或者是否有好的插件可以做到这一点。请注意,在我的分析中,我需要达到至少 4 克(最好是 5 克),所以我见过的简单的 2 克插件在这里不起作用。在进行 n-gram 计数之前,我还需要能够从文本文档中删除停用词。

来自社区的任何想法?

谢谢,

罗恩

4

2 回答 2

1

我的建议是使用专门的全文搜索索引程序,比如 lucene/solr,它对这类事情有更丰富和可扩展的支持。它需要您学习一些知识才能设置它,但听起来好像您想在 MySQL 中难以自定义的级别上搞砸。

于 2011-09-21T20:35:03.513 回答
0

如果你真的想过早地优化;) 你可以将你的 python 翻译成 C,然后用瘦mysql UDF 包装器代码包装它。

但我强烈建议一次只加载一个文档并在它们上运行你的 python 脚本来填充一个 n-gram 的 mysql 表。目前我的每一个钉子都是Django。它的ORM使与 mysql 表的交互和优化这些交互变得轻而易举。我正在使用它在 python 中对生产站点的数百万条记录数据库进行统计必须在不到一秒的时间内返回大量数据。如果你发现比 mysql 更好的东西,比如 postgre,任何 python ORM 都会让你更容易切换数据库。最好的部分是有很多 python 和 django 工具可以监控应用程序性能的各个方面(python 执行、mysql 加载/保存、内存/交换)。这样你就可以解决正确的问题。可能是顺序批量 mysql 读取并不是让你慢下来的原因......

于 2013-03-30T19:06:16.087 回答