Docs Menu
Docs Home
/
MongoDBマニュアル
/ / /

自己管理型配置でスキャンされたテキストインデックスのエントリ数の制限

このチュートリアルでは、 $text式と等価条件を含むクエリでスキャンされるインデックスエントリの数を制限するインデックスの作成方法について説明します。

コレクション inventory には次のドキュメントが含まれています。

{ _id: 1, dept: "tech", description: "lime green computer" }
{ _id: 2, dept: "tech", description: "wireless red mouse" }
{ _id: 3, dept: "kitchen", description: "green placemat" }
{ _id: 4, dept: "kitchen", description: "red peeler" }
{ _id: 5, dept: "food", description: "green apple" }
{ _id: 6, dept: "food", description: "red potato" }

次のような個々の部門ごとにテキスト検索を実行する一般的なユースケースを考えてみましょう。

db.inventory.find( { dept: "kitchen", $text: { $search: "green" } } )

テキスト検索を特定のdept内のドキュメントのみをスキャンするように制限するには、最初にフィールドdeptに昇順または降順のインデックスキーを指定し、次に フィールドdescriptiontextインデックスキーを指定する複合インデックスを作成します。 :

db.inventory.createIndex(
{
dept: 1,
description: "text"
}
)

次に、特定の部門内のテキスト検索によって、インデックス付きドキュメントのスキャンが制限されます。 たとえば、次のクエリは、 deptkitchenに等しいドキュメントのみをスキャンします。

db.inventory.find( { dept: "kitchen", $text: { $search: "green" } } )

注意

  • 複合textインデックスには、マルチキー地理空間インデックス フィールドなどの他の特殊なインデックスタイプを含めることはできません。

  • 複合テキスト インデックスにテキスト インデックス キーのにキーが含まれている場合、 $textを使用するには、クエリ述語に先行するキーに対する等価一致条件が含まれている必要があります。

  • 複合textインデックスを作成する場合、すべてのtextインデックス キーをインデックス仕様ドキュメントに連続して表示する必要があります。

Tip

以下も参照してください。

戻る

自己管理型配置のテキスト検索結果への重みの割り当て