Docs Menu
Docs Home
/ / /
Lambda MongoDB

Scout を使用した全文検索

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

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

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

    重要

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

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

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

重要

配置の互換性

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

このチュートリアルでは、Scout を使用して Elastic モデル( MongoDBまたはSQL )からMongoDB Atlas 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ファイルでは、カスタム Atlas Searchインデックス定義を指定することもできます。詳しくは、次のステップのカスタムインデックス定義の例を参照してください。

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

.env
SCOUT_DRIVER=mongodb

Tip

キューイング

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

4

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

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

デフォルトの検索ドライバーとしてMongoDB を設定しているため、上記のコマンドはMongoDBデータベースに Atlas Searchインデックスを持つ検索コレクションを作成します。コレクションの名前は、前の手順で設定されたプレフィックスに基づいて、scout_movies に基づきます。Atlas Searchインデックスの名前は 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']]
]
]
]
], ...

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

注意

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

5

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

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

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

Tip

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

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

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

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

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

戻る

キャッシュとロック

項目一覧

  • Overview
  • Atlas Search チュートリアルの Scout
  • Scoutパッケージをインストールする
  • モデルに検索可能な属性を追加する
  • アプリケーションで Scout を設定する
  • Atlas Search インデックスの作成
  • 検索可能なコレクションへのデータのインポート