AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。

Scout を使用した全文検索

このガイドでは、 Lambda MongoDBアプリケーションで Lambda Scout 機能を使用する方法を学習します。Scout を使用すると、Eloquet モデルに全文検索を実装できます。詳細については、Lambel ドキュメントのLambel Scoutを参照してください。

Lambda MongoDBの Scout 統合は次の機能を提供します。

  • 任意のMongoDBまたはSQLモデルから検索インデックスを作成するための抽象化を提供します。

    重要

    スキーマ ビルダを使用して検索インデックスを作成する

    ドキュメントがすでにMongoDBにある場合は、MongoDB PHPライブラリまたは Schema ビルダ メソッドを使用して検索インデックスを作成し、検索クエリのパフォーマンスを向上させます。検索インデックスの作成の詳細については、 MongoDB Searchガイドの「 MongoDB Search インデックスの作成 」セクションを参照してください。

  • MongoDBからMeilisearchやAlgoliaなどの検索エンジンにデータを自動的に複製できるようにします。MongoDB Elastic モデルをインポートとインデックスのソースとして使用できます。検索エンジンへのインデックス作成の詳細については、 Lambda Scout ドキュメントの「 インデックス作成 」セクションを参照してください。

重要

配置の互換性

Lambda Scout は、MongoDB Atlas配置に接続する場合にのみ使用できます。この機能は、自己管理型の配置では使用できません。

このチュートリアルでは、Scout を使用して Eloquent モデル(MongoDB または SQL)から MongoDB Search のインデックス作成されたドキュメントを複合化およびインデックス作成する方法を説明します。

1

アプリケーションで Scout を使用する前に、アプリケーションのルートディレクトリから次のコマンドを実行して laravel/scoutパッケージ をインストールしてください。

composer require laravel/scout
2

モデルが検索可能になるようにするには、Laravel\Scout\Searchable トラッキングを実行します。次の例では、sample_mflix.moviesコレクション内のドキュメントを表す Movie モデルにこの特性を追加します。

<?php namespace App\Models; use MongoDB\Laravel\Eloquent\Model;use Laravel\Scout\Searchable; class Movie extends Model{ use Searchable; protected $connection = 'mongodb';}

また、Searchable トラートを使用して、ドキュメントの再フォーマット、関連ドキュメントの埋め込み、またはドキュメント値の変換を行います。詳細については、Lambda Scout ドキュメントの「検索可能なデータの構成」セクションを参照してください。

3

アプリケーションがデータベース接続としてMongoDB を使用するように構成されていることを確認します。MongoDBを構成する方法については、 クイック スタートガイドの「 MongoDB接続の構成 」セクションを参照してください。

アプリケーションで Scout を構成するには、アプリケーションの configディレクトリに scout.php という名前のファイルを作成します。以下のコードをファイルに貼り付けて、Scout を構成します。

config/sout.zip

<?php return [ 'driver' => env('SCOUT_DRIVER', 'mongodb'), 'mongodb' => [ 'connection' => env('SCOUT_MONGODB_CONNECTION', 'mongodb'), ], 'prefix' => env('SCOUT_PREFIX', 'scout_'),];

上記のコードでは、次の構成を指定します。

  • SCOUT_DRIVER 環境変数の値をデフォルトの検索ドライバーとして使用します。または、環境変数が設定されていない場合は mongodb

  • 検索可能なコレクションのコレクション名のプレフィックスとして scout_ を指定します

config/scout.phpファイルでは、カスタムMongoDB検索インデックス定義を指定することもできます。詳しくは、次のステップのカスタムインデックス定義の例を参照してください。

アプリケーションの .envファイルで次の環境変数を設定して、デフォルトの検索ドライバーとして mongodb を選択します。

.env

SCOUT_DRIVER=mongodb

Tip

キューイング

Scout を使用する場合は、アプリケーションの Web インターフェイスの応答時間を短縮するために、キュー ドライバーを構成することを検討してください。詳細については、Laravel ScoutドキュメントのキューイングセクションおよびLaravelキューの設定ガイドをご覧ください。

4

Scout を構成し、デフォルトの検索ドライバーを設定したら、アプリケーションの ルートディレクトリから次のコマンドを実行中、検索可能なコレクションと検索インデックスを作成できます。

php artisan scout:index 'App\Models\Movie'

デフォルトの検索ドライバーとしてMongoDBを設定しているため、上記のコマンドはMongoDBデータベースにMongoDB検索インデックスを持つ検索コレクションを作成します。コレクションの名前は、前の手順で設定されたプレフィックスに基づいて、scout_movies に基づきます。MongoDB 検索インデックスの名前は scout で、デフォルトでは次の構成です。

{ "mappings": { "dynamic": true }}

インデックス定義をカスタマイズするには、config/scout.phpファイルの mongodb エントリに index-definitions 構成を追加します。次のコードは、scout_moviesコレクションに作成するカスタムインデックス定義を指定する方法を示しています。

'mongodb' => [ 'connection' => env('SCOUT_MONGODB_CONNECTION', 'mongodb'), 'index-definitions' => [ 'scout_movies' => [ 'mappings' => [ 'dynamic' => false, 'fields' => ['title' => ['type' => 'string']] ] ] ]], ...

MongoDB 検索インデックス定義の詳細については、Atlas ドキュメントのフィールド マッピングの定義ガイドを参照してください。

注意

MongoDB、MongoDB 検索インデックスの作成と確定に最大1分かかるため、scout:index コマンドでは成功メッセージがすぐに返されない可能性があります。

5

Scout を使用して、Eloquet モデルによってモデル化されたソースコレクションから検索可能なコレクションにデータを複製できます。次のコマンドは、moviesコレクションのデータを、前のステップでインデックス付きの scout_moviesコレクションに複製してインデックスを作成します。

php artisan scout:import 'App\Models\Movie'

MongoDB 検索クエリのドキュメントは自動的にインデックス化されます。

Tip

インポートするフィールドの選択

検索可能なコレクションには、ソース ドキュメントのすべてのフィールドが必要ない場合があります。複製するデータ量を制限すると、アプリケーションの速度とパフォーマンスが向上します。

Eloqueent モデルクラスで toSearchableArray() メソッドを定義することで、インポートする特定のフィールドを選択できます。次のコードは、レプリケーションの plot フィールドと title フィールドのみを選択するための toSearchableArray() を定義する方法を示しています。

class Movie extends Model{ .... public function toSearchableArray(): array { return [ 'plot' => $this->plot, 'title' => $this->title, ]; }}

これらの手順を完了すると、Laravel MongoDB アプリケーションの scout_movies コレクションに対して MongoDB Search クエリを実行できます。MongoDB Search を使用して全文検索を実行する方法については、MongoDB Search クエリの実行 ガイドを参照してください。