在MongoDB中搜索关键字

时间:2013-04-29 20:38:20

标签: mongodb

我在集合中的每个文档中都有一个关键字数组。

这个嵌入式阵列每个文档最多可以容纳15个单词。

该系列有数百万份文件。

用户只需点击一个关键字即可获得具有相同关键字的前20个文档。

我应该只在该字段上创建一个muli-key索引,还是使用Lucene索引该关键字字段?

MongoDB关键字搜索在数组索引上的表现是什么?

这似乎是自然的选择,因为Lucene / Solr似乎有点过分。

在我选择之前对此有何评论?

1 个答案:

答案 0 :(得分:0)

您可以将memcache添加到服务器端代码,因为您似乎要做的就是进行大量读取。当你将信息存储在内存中时,这当然会占用大量的RAM,但是当访问哈希数组时,检索将超级超快:>

你确实说过数百万,这可能会吃几百个megs:|取决于文件本身。

您可能需要一些逻辑来处理"查询"因为你现在应该有不同的结构。

这个1..15个单词的数组将不得不转为:

Doc 1: {_id:123, keys:[ key0, key1...keyN]}
Doc 2: {_id:456, keys:[ key0, key1...keyM]}

Memcache = [];
Memcache[ key0 ] = [ Doc 1, Doc 2 ];
Memcache[ key1 ] = [ Doc 1, Doc 2 ];
...
Memcache[ keyN ] = [ Doc 1 ];
...
Memcache[ keyM ] = [ Doc 2 ];

因此,当您搜索keyZ的前20个文档时,您只需执行Memcache [keyZ]并将结果限制为20,我期待数百/数千个文档。