zoukankan      html  css  js  c++  java
  • MongoDb 2.4 beta新特性——全文索引

    期待已久的特性,但目前仍然在beta阶段,所以官方建议不要在生产环境使用。也因此需要手动打开这个特性。

    在命令行指定

    mongod --setParameter textSearchEnabled=true ...

    也可以放在配置文件中

    setParameter = textSearchEnabled=true

    还可以通过命令启动:

    db.adminCommand( { setParameter : 1, textSearchEnabled : true } )

    如果是用在Replica Set中,则每个结点都必须启用这个配置。

    进行以上配置后,可以通过ensureIndex命令来为一个字段配置全文索引,如:

    db.reviews.ensureIndex( { comments: "text" } )

    关于创建全文索引的详细说明请参考这里。其中有意思的是全文索引除了对单一字段有效外,也可以配置为对文档中的所有文本字段有效:

    db.collection.ensureIndex(
        { "$**": "text" },
        { name: "TextIndex" }
    )

    这条命令会建立一个名为“TextIndex”的对文档中所有文本字段都有效的全文索引。

    全文索引只能使用text命令来访问,而不是在查找文档时默认使用。这是beta特性的特殊处理,官方预计将在2.6版本中使它变为常规find语法的一部分。大概会是这个样子:

    collection.find({ caption: { $text: "query" }})

    但是目前只能使用这样的语法:

    t.runCommand( "text", { search : "Australian" } );

    注意全文索引是大小写敏感的,这点和Sql Server不太一样,使用时要小心。并且默认只会返回头100条结果,这是由性能问题决定的。

    全文索引也会丢掉无意义的冠词、数词,如a, an, the等,但这取决于使用的语言。语言可以在创建全文索引时指定:

    db.collection.runCommand( "text", { search: <string>,
                                        filter: <document>,
                                        project: <document>,
                                        limit: <number>,
                                        language: <string> } )

    这部分内容可以参考这里

  • 相关阅读:
    第12组(78) Beta冲刺 (2/5)(组长)
    第12组 Beta冲刺 (1/6)(组长)
    软工实践个人总结
    第 02 组 每周小结 (3/3)
    第02组 每周小结(2/3)
    第02组 每周小结 (1/3)
    第02组Beta冲刺 总结
    第02组Beta冲刺(5/5)
    第02组Beta冲刺(4/5)
    第02组Beta冲刺(3/5)
  • 原文地址:https://www.cnblogs.com/yaoxing/p/mongodb-full-text-index.html
Copyright © 2011-2022 走看看