带有标签和排序的搜索系统的提示(有关数据库设计,性能问题,......的问题)

时间:2013-03-07 16:55:20

标签: mongodb search database-design

我正在开发一个围绕Java / Scala共享文本的站点,Play Framework 2和MongoDB用于存储。 我目前正在开发搜索页面。当然会有经典的文本字段搜索,但也有两种类型的过滤器:

  • 标签
  • 每年/每月/每周最高评分/最多观看次数

例如,可以在标签为“fantasy”的那些中获得本周最佳xxx文本。如果你不明白我的意思,请想想Pornhub。 ;)

我看到了如何进行查询,但我担心性能问题。 我是一个关于性能和查询优化的真正的菜鸟,以及一个MongoDB初学者,所以我担心会在成千上万的文本中寻找,排序和排名的大查询的影响。 当然,我想到了缓存系统,但我不知道如何实现它,因为每个查询可能不同。我还想到了每天午夜(例如)有一份工作更新的临时馆藏,但同样有太多不同的组合。

那么我可以使用哪些技巧和“技巧”进行建模?你知道吗?是否有针对此设计的搜索框架? 或者我担心太多了,MongoDB可以很好地处理那种排序和排名?

我希望能够清楚。非常感谢你的帮助!

1 个答案:

答案 0 :(得分:0)

一些注意事项:

  1. MongoDB即将推出全文搜索。 (V2.4)
  2. 您可以在写入Mongo的同时将数据发送到Elastic Search或Solr。然后,您可以使用Elastic或Solr进行搜索。
  3. 您绝对可以在Mongo中标记文本文档,然后将其编入索引并进行搜索。例如:
  4. { "_id" : 123, "content" : "...", "tags" : [ "fun", "cool read" ] } 

    您索引“标记”字段,然后您可以搜索“tag:'fun'”,Mongo将非常快速地检索该文档。

    你没有描述你是如何做出最高评价的,但你绝对可以将这些信息写入文本和查询。