1

コレクションに対して全文検索を実行したいと考えています。私はmongo 2.4を使用しているので、mongodbのテキストコマンドでやりたいと思います

mongo のコンソールでそれを行う方法は (mongo の公式ドキュメントに従って) です。

db.collection.runCommand( "text", { search: <string> })

期待される結果を返します。

今、私はルビー/レールで同じことを達成したいと考えています。私は使っているmongo gem version 1.8.4

変更ログ/履歴 によると、新しい MongoDB 2.4 インデックス タイプのサポートがあります。

text commandしかし、ルビーを使用してコレクションで実行するにはどうすればよいですか。

私はこのブログ投稿を見ました。でも役に立たなかった

アップデート:

私は試した、

  command = BSON::OrderedHash.new
  command['find'] = collection
  command['text'] = {'search' => 'string'}
  result = @db.command(command)

しかし、それは与えます

Database command 'find' failed: (ok: '0.0'; errmsg: 'no such cmd: find'; bad cmd: '{"find"=>"project", "text"=>{"search"=>"string"}}').

更新 2:

phpにも同様のものが存在します。私は同じものに相当するルビーを探しています。

4

3 に答える 3

2

Ruby 1.8 で BSON::OrderedHash を使用するだけで済みます。Ruby 1.9 以降を実行している場合は、次の構文を使用してテキスト インデックスを作成/クエリできます。

require 'mongo'
include Mongo

client = MongoClient.new
db = client['my_database']
coll = db['my_collection']

# create a text index
coll.ensure_index({:field_name => Mongo::TEXT})

# run a text query
db.command({:text => 'my_collection', :search => 'search string'})
db.command({:text => 'my_collection', :search => 'search string', :filter => {:foo => 'bar'}})
于 2013-04-09T05:40:33.710 に答える
1

ここではmongodbのインストールが機能していませんが、次のようにする必要があります。

command = OrderedHash.new
command['text'] = <collectionname>
command['search'] = <string>
result = @db.command(command)

お役に立てれば。

于 2013-04-01T10:54:44.487 に答える
1

私が使用した、

  command = {}
  command["text"] = collection_name
  command["search"] = "search_string"
  result = @db.command(command)

それが動作するように見えます。私は他の答えを待ちます。

于 2013-04-01T11:47:33.007 に答える