我们有一个 mongo 集合,可以在许多领域进行搜索和排序。举个例子(对不起,由于保密,我不能放真正的收藏),我们采取:
MathProblem
{
Creator : String,
Difficulty : integer (from 0 to 4),
Categorie : integer (from 0 to 40),
NbOfQuestion : integer (less than 20),
Likes : integer,
Dislikes : integer,
Succeeded : integer,
Failures : integer
}
我们可以搜索 Creator、Difficulty、Categorie、NbOfQuestion。并按喜欢、不喜欢、成功和失败进行排序。
前任:
- 给我难度 3 的问题,类别 20 按点赞数排序。
- 给我 5 个问题的问题,按失败排序。
- 给我难度为 1、类别 10、2 的问题,由 Einstein 创建。
- 给我所有按成功排序的问题。
等等......你得到的图片所有的排列都是可能的,我们可以选择在一个字段上排序。
这里的问题是我们有数百万条记录。索引花费我们至少 30 gig。另外,因为我们有这么多的索引,它压低了这个集合的写入速度。虽然它正在破坏写作,但它正在锁定阅读。所以我们读了很多,写的可能少了一点,但仍然很多。
我搜索“搜索引擎解决方案”,但我只能在“全文搜索”上找到东西,这不是我的情况。
我们还尝试将难度、Categorie 和 NbOfQuestion 合并到一个数组中(通过将值乘以 10 因子以保持它们之间的一致性)以仅在该数组上建立索引并节省一些空间。
任何事后诸葛亮将不胜感激!
谢谢,
查尔斯