我在MongoDB中有文本索引,并希望使用text命令在我的集合中进行搜索。在Mongoid中找不到此功能。
答案 0 :(得分:2)
我试图找到解决方案,因为我也是一个mongoid用户。除了查询之外,我还没有在mongoid中找到任何与搜索文本相关的具体内容。经过一番调查后,我发现mongoid_search宝石可能对搜索文本有用。
它有一个限制,写在自述文件的第一行是“如果你的可搜索模型很大(即1.000.000+记录),solr或sphinx可能更适合你。”如果您有,则需要配置solr或elasticsearch以获得更好的性能。如果你打算在heroku上进行部署,那么请在这方面进行开发。
这可能会帮助您实现目标。
答案 1 :(得分:1)
session = Mongoid.session('default')
session.command({"text" => 'my_collection', 'search' => 'whatever'})
做一个漂亮的混音:
# mixins/search.rb
module Mixins
module Search
extend ActiveSupport::Concern
module ClassMethods
def search(query)
session = Mongoid.session('default')
session.command({"text" => collection.name, 'search' => query})
end
end
end
end
这样您只需include Mixins::Search
进入模型并使用Model.search 'whatever'
搜索内容。