【发布时间】:2012-08-23 18:39:05
【问题描述】:
我们有一个 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 因子以保持它们分开)以仅在该数组上建立索引并节省一些空间。
我们将不胜感激任何事后诸葛亮!
谢谢,
查尔斯
【问题讨论】:
-
尽管 Solr / Elasticsearch(均由 Lucene 支持)作为全文搜索引擎(它们是)进行营销,但它们非常适合您的用例。我广泛使用 ES(并且使用 SOLR 已经有几年了)用于复杂的搜索页面,包括分面、排序等。
-
我确实阅读了一些关于 ElasticSearch 的内容,但没有看到关于它在大量索引下的表现的性能/内存分析。
-
我的单元格中的快速一个:搜索lucene索引性能应该有很多信息
标签: mongodb search-engine database-indexes