【问题标题】:MongoDB - searching textMongoDB - 搜索文本
【发布时间】:2012-03-26 18:11:11
【问题描述】:

选择字符串值包含一组单词或短语的 mongodb 条目的最佳策略是什么?我正在考虑类似于 mysql 的 LIKE 函数的东西,例如

    WHERE (TEXT LIKE "% apple %") or (TEXT LIKE "% banana %")

我见过涉及对字符串进行标记的选项,但这将涉及为所有文本构建一元组,这将是巨大的不?

【问题讨论】:

    标签: mongodb full-text-search text-search


    【解决方案1】:

    不知何故,MongoDB 内置文本搜索无法满足我对使用复合索引的现有数据库的要求。我现在正在使用mongoose-search-plugin,它运行得非常好。它使用自然词干提取和距离算法来返回相关性分数。

    User.search('Malaysia Car Food',{username:1},{},  function(err, u){
       console.log('Search Results: '+JSON.stringify(u));
    }); 
    

    【讨论】:

      【解决方案2】:

      MongoDB目前还没有全文搜索能力,但是使用SOLR等外部搜索引擎还是很方便的。

      我强烈不鼓励您尝试自己使用正则表达式或词干等重建文本搜索。你应该更专注于你的应用本身的功能:)

      我正在使用这个组合:MongoidSunspotMongoid-Sunspot。它在生产环境中运行良好,开发设置也很简单。

      【讨论】:

      【解决方案3】:

      您可以在 MongoDB 查询中使用正则表达式支持。更多详情可@以下链接

      http://docs.mongodb.org/manual/reference/operator/regex/

      如果上面的链接将来再次移动,这里有两个例子:

      db.collection.find( { field: /acme.*corp/i } );
      db.collection.find( { field: { $regex: 'acme.*corp', $options: 'i' } } );
      

      【讨论】:

        【解决方案4】:

        Mongo 从 2.4 开始支持文本搜索。 我的经历非常积极

        http://docs.mongodb.org/manual/applications/text-search/

        您在启用 setParameter 文本搜索的情况下启动服务器 然后在集合上启用索引 然后用 runCommand 搜索

        【讨论】:

          猜你喜欢
          • 2016-05-28
          • 1970-01-01
          • 2018-09-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-09-05
          相关资源
          最近更新 更多