0

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

这个嵌入式数组在每个文档中最多可以容纳 15 个单词。

该集合有数百万的文档。

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

我应该只在该字段上创建一个多键索引还是使用 Lucene 来索引该关键字字段?

MongoDB的关键字搜索在数组索引上的表现如何?

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

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

4

1 回答 1

0

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

您确实说过数百万,这可能会吃掉数百兆:| 取决于文件本身。

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

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,我预计会有数百/数千个文档。

于 2013-04-30T06:52:05.217 回答