奥德赛F9 发表于 2015-7-10 09:20:56

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: ,
filter: ,
project: ,
limit: ,
language:} )
  这部分内容可以参考这里。
页: [1]
查看完整版本: MongoDb 2.4 beta新特性——全文索引