3

我在 MongoDB 中有文本索引,并且想使用文本命令在我的集合中进行搜索。在 Mongoid 中找不到此功能。

4

2 回答 2

2

我试图找到解决方案,因为我也是一个 mongoid 用户。除了 where 查询之外,我还没有找到任何与 mongoid 中的搜索文本相关的特定内容。经过一番调查,我发现了 mongoid_search gem,它可能对搜索文本很有用。

它有一个限制,写在自述文件的第一行是“如果您的可搜索模型很大(即 1.000.000+ 条记录),solr 或 sphinx 可能更适合您。” 如果有,您需要配置 solr 或 elasticsearch 以获得更好的性能。如果您要在 heroku 上进行部署,那么也请考虑到这一点。

可能这会帮助你实现你的目标。

于 2013-04-17T12:14:09.057 回答
1

最近遇到了类似的情况。您可以通过以下方式在 Mongoid 中运行搜索命令:

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'来搜索东西。

于 2013-10-23T07:05:39.047 回答