0

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

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

例如,有可能在带有“幻想”标签的文本中获得本周的 xxx 个最佳文本。如果你不明白我的意思,想想 Pornhub。;)

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

那么我可以用来建模的技术和“技巧”是什么?你有什么想法吗?是否有为此设计的搜索框架?还是我太担心了,而 MongoDB 可以很好地处理这种排序和排名?

我希望清楚。非常感谢您的帮助!

4

1 回答 1

0

一些注意事项:

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

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

你没有描述你是如何获得最高评价的,但你绝对可以将这些信息写入文本并对此进行查询。

于 2013-03-08T23:35:07.273 回答