Mongoid text_search耗时太长

时间:2014-12-19 17:05:05

标签: ruby-on-rails mongodb mongoid

昨天我重新编制了我的收藏品。它有超过200万份文件。

通过Mongodb客户端(robomongo)搜索我的结果很少:

db.items.find({$text: {$search: "The Long Haul"}})

http://cl.ly/image/182B1P2D1h2n

但是,使用Mongoid text_search执行搜索:

Item.text_search(term).execute

查询需要永远(超过2分钟)(通过text_search进行的其他搜索会花费更少的时间)。

D, [2014-12-19T17:56:07.598777 #66067] DEBUG -- :   MOPED: 22.22.22.22:43700 COMMAND      database=production command={:text=>"items", :search=>"\"The\"\"Long\"\"Haul\""} runtime: 131198.9850ms
OVER
131.199424

text_search执行与“原始”文本搜索不同的查询吗?

1 个答案:

答案 0 :(得分:1)

不知道你是否想到了这一点,但我在查找Mongoid .text_search在MongoDB 3.0中不起作用的原因时遇到了问题。 目前的MongoDB文档建议在shell中对这样的文本索引运行查询;

db.items.find({$text: {$search: "The Long Haul"}})

Mongoid .text_search方法使用3.0中删除的text命令。这是shell的一个例子,

db.items.runCommand( "text", { search: "The Long Haul"} )

这可以解释两个查询之间的性能差异。

如果有帮助,以下语法可以在Mongodb 3.0上使用Mongoid;

Item.where({ :$text => { :$search => "The Long Haul"} } )