我有近150k土耳其文章。我将使用文章进行自然语言处理研究。 我想在处理文章后存储每篇文章的文字和频率。
我现在将它们存储在RDBS中。
我有3张桌子:
文章 - > article_id的,文字
单词 - > word_id,type,word
Words-Article - > id,word_id,article_id,frequency(word_id的索引,article_id的索引)
我将查询
我在文章表中有数百万行。我一直在这个项目中使用RDBS。现在开始使用mysql并使用oracle。但是我不想使用oracle并且想要比mysql更好的性能。
另外,我必须在装有4gb内存的机器上处理这项工作 简单地说,如何存储文档术语矩阵并对其进行一些查询?表现是必要的。可以“键值数据库”在性能上击败mysql吗?或者什么可以击败mysql?
如果您的答案编程语言依赖,我在python中编写代码。但是C / C ++,Java还可以。
答案 0 :(得分:0)
也许可以查看lucene(或php中的Zend_Search_Lucene)。这是非常好的FTS引擎。
答案 1 :(得分:0)
对于150k篇文章,words_articles表中必须有几亿行。只要您正确配置MySQL,这是可管理的。
一些提示:
删除words_articles表中的id字段,并将(word_id,article_id)作为主键。另外,在words_articles表中为word_id和article_id创建单独的索引:
ALTER TABLE words_articles
DROP PRIMARY KEY,
ADD PRIMARY KEY (word_id, article_id),
ADD INDEX (word_id),
ADD INDEX (article_id);
(在单个alter语句中执行所有操作可以提供更好的性能)。
在单词表中创建单词索引:
ALTER TABLE words ADD INDEX (word);
调整my.cnf。具体来说,增加缓冲区大小(尤其是key_buffer_size)。 my-huge.cnf可能是一个很好的起点。