【问题标题】:What is a correct mongodb collection structure for full-text search?什么是全文搜索的正确 mongodb 集合结构?
【发布时间】:2015-02-28 13:25:21
【问题描述】:

我有一个简单的 MongoDB 网站,其中专用搜索引擎(如 elasticsearch)将是一种过度杀伤,并且会增加支持复杂性,因此我想坚持使用 MongoDB 2.6 全文搜索。如我所见,MongoDB 将文本搜索索引限制为每个集合仅one 字段。如果我有一个Users 集合,并且想要启用对用户名和用户描述的全文搜索,那么正确的集合结构是什么?我可以建议创建一个单独的 Text 集合,我将在其中保留我网站的所有文本信息并将其用于搜索。例如,将这样插入用户:

users.insert({
  name_ref: texts.insert({text: "John Doe", type: USER_NAME}),
  description_ref: texts.insert({text: "This is a test user", type: USER_DESCR}),
});

这是一个好的解决方案,还是这么多的集合间依赖会杀死 MongoDB,我需要使用其他方法?

【问题讨论】:

    标签: mongodb full-text-search


    【解决方案1】:

    如我所见,MongoDB 将文本搜索索引限制为每个集合仅一个字段。

    你在这里弄错了。一个集合每个集合只能有一个文本index。 来自docs

    一个集合最多可以有一个文本索引。

    该索引又可以包含multiple 字段,以便为文本搜索编制索引。

    你可以创建索引,

    db.collection.ensureIndex({"userName":"text","description":"text"});
    

    并执行特定关键字的搜索,

    db.collection.find({$text:{$search:"keyword"}});
    

    您的收藏可以是自包含的,无需引用其他收藏。

    {
      userName:"John Doe",
      description:"This is a test user"
    }
    

    【讨论】:

    • 感谢您的精彩回答,祝您新年快乐!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-04
    • 2017-08-19
    • 1970-01-01
    • 1970-01-01
    • 2015-08-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多