【问题标题】:Mongodb text search for large collectionMongodb文本搜索大集合
【发布时间】:2015-08-25 02:08:59
【问题描述】:

鉴于以下集合,该集合具有约 1800 万份文档的潜力。我需要文档的 payload 部分的搜索功能。 由于数据量大,如果我在文档的payload字段上创建文本索引会不会产生性能问题?当集合包含数百万个文档时,是否存在任何已知的性能问题?

{
    "_id" : ObjectId("5575e388e4b001976b5e570d"),
    "createdDate" : ISODate("2015-06-07T05:00:34.040Z"),
    "env" : "prod",
    "messageId" : "my-message-id-1",
    "payload" : "message payload typically 500-1000 bytes of string data"
}

我使用 MongoDB 3.0.3

【问题讨论】:

    标签: mongodb


    【解决方案1】:

    我相信这正是 NoSQL DB 的设计初衷;让您通过 [inverted] 索引快速访问一段数据。 Mongo 就是为此而设计的。像 Mongo 这样的 NoSQL DB 旨在处理分布在集群中多个节点的海量数据集。 Mongo 范围内的 1800 万是非常小的。如果您索引属性,您应该不会有任何性能问题。您可能还想阅读sharing,这是从 MongoDB 中获得最佳性能的关键。

    【讨论】:

      【解决方案2】:

      您可以使用 Mongo DB Atlas 功能,在该功能中,您可以根据 MongoDB 提供的不同分析器搜索您的文本。然后您可以进行模糊搜索,其中也将返回更接近您的文本的文本: PS:全文匹配忽略模糊,只需要排除下面的模糊对象即可。

      $search:{
       {
        index: 'analyzer_name_created_from_atlas_search',
        text: {
          query: 'message payload typically 500-1000 bytes of string data',
          path: 'payload',
          fuzzy:{
            maxEdits: 2
          }
        }
       }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-12-26
        • 2014-07-31
        • 2021-04-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多