3

MongoDB にテキスト インデックスがあり、テキストコマンドを使用してコレクションを検索したいと考えています。この機能は Mongoid にはありません。

4

2 に答える 2

2

私もモンゴイドユーザーであるため、解決策を見つけようとしました。whereクエリ以外のmongoidの検索テキストに関連する特定のものは見つかりませんでした。少し調査した結果、検索テキストに役立つ可能性のあるmongoid_search gem を見つけました。

readme の最初の行に書かれている 1 つの制限があります。「検索可能なモデルが大きい場合 (つまり、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 に答える