Docs Menu
Docs Home
/ / /
Mongoid
/

テキスト検索

項目一覧

  • テキスト検索インデックスの定義
  • テキストインデックスの作成
  • テキストインデックスを使用したクエリ

MongoDB は、string コンテンツに対するテキスト検索クエリをサポートするためにテキスト インデックスを提供します。 テキストインデックスには、値が string または複数の string 配列である任意のフィールドを含めることができます。

注意

MongoDB Atlas は、より強力で柔軟なテキスト検索ソリューションであるAtlas Searchも提供しています。 このセクションの残りの部分では、Atlas Search ではなく、テキスト インデックスについて説明します。

Mongoid を使用してテキスト検索を実行するには、次の手順に従います。

  1. モデルに テキスト インデックス を定義します。

  2. サーバー上にテキスト インデックスを作成します。

  3. テキスト検索クエリを作成します。

Mongoid によるインデックス定義について詳しくは、 インデックスページで説明されています。 テキスト検索インデックスは、MongoDB マニュアルのテキスト インデックスで詳しく説明されています。 以下は、説明フィールドを利用したテキストインデックスを持つ帯域モデルの定義例です。

class Band
include Mongoid::Document
field :name, type: String
field :description, type: String
index description: 'text'
end

インデックス タイプ( text )は、シンボルではなく string として指定する必要があることに注意してください。

インデックスを作成するには、次のようにdb:mongoid:create_indexes Rake タスクを呼び出します。

bundle exec rake db:mongoid:create_indexes

説明に「Once」またはそのバリエーションが含まれているバンドを検索するには、 $text 演算子を使用します。

Band.where('$text' => {'$search' => 'ounces'}).to_a
# => [#<Band _id: 5d5341b3ce4ef35d5016746d, name: "foo", description: "ounce">]

検索クエリが「Onces」であったにもかかわらず、説明に「Once」という単語が含まれていることに注意してください。

また、テキスト検索を実行する場合、フィールド名が明示的に指定されていないことにも注意してください$text演算子は、 テキストインデックス でインデックス付けされたすべてのフィールドを検索します。

戻る

クエリ