昨天我重新编制了我的收藏品。它有超过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执行与“原始”文本搜索不同的查询吗?
答案 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"} } )