我在集合中的每个文档中都有一个关键字数组。
这个嵌入式阵列每个文档最多可以容纳15个单词。
该系列有数百万份文件。
用户只需点击一个关键字即可获得具有相同关键字的前20个文档。
我应该只在该字段上创建一个muli-key索引,还是使用Lucene索引该关键字字段?
MongoDB关键字搜索在数组索引上的表现是什么?
这似乎是自然的选择,因为Lucene / Solr似乎有点过分。
在我选择之前对此有何评论?
答案 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,我期待数百/数千个文档。