Docs Menu
Docs Home
/ /

テキストクエリの実行

このガイドでは、 Lambda MongoDBを使用してテキストクエリを実行する方法を学習します。

テキストクエリを使用して、指定されたフィールドにタームまたはフレーズを含むドキュメントを取得できます。タームは、空白文字を除外する文字のシーケンスです。フレーズは、任意の数の空白文字を含むタームのシーケンスです。

このガイドでは、テキスト検索に使用できる Eloqueent モデル メソッドについて説明し、例を示します。Laravel 統合の効率モデルの詳細については、「 効率モデル セクション 」を参照してください。

このガイドのコード例を実行するには、「クイック スタート 」チュートリアルを完了してください。 このチュートリアルでは、サンプル データを使用して MongoDB Atlas インスタンスを設定し、Lambda ウェブ アプリケーションで次のファイルを作成する手順を説明します。

  • Movie.php ファイル( moviesコレクション内のドキュメントを表すMovieモデルを含む)

  • MovieController.php ファイル(データベース操作を実行するためのshow()関数を含む)

  • browse_movies.blade.php データベース操作の結果を表示するための HTML コードを含む ファイル

次のセクションでは、Laravel アプリケーション内のファイルを編集して検索操作コード例を実行し、期待される出力を表示する方法について説明します。

テキストクエリを実行する前に、テキスト値フィールドに テキストインデックス を作成する必要があります。インデックスの作成の詳細については、スキーマ ビルダガイドの「 インデックスの管理 」セクションを参照してください。

$text 演算子を使用し、その後に where() メソッドに渡すクエリフィルター内の $searchフィールドを使用して、テキストクエリを実行できます。$text 演算子は、テキストインデックス作成されたフィールドに対してテキストクエリを実行します。$searchフィールドは、検索するテキストを指定します。

where()メソッドを使用してクエリを作成したら、 get()メソッドを連鎖させてクエリ結果を検索します。

この例では、Movie Elonger モデルの where() メソッドを呼び出して、plotフィールドに "love story" というフレーズが含まれるドキュメントを検索します。このテキスト クエリを実行するには、コレクションに plotフィールドのテキストインデックスが 必要 です。

クエリを指定するには、次の構文を使用します。

$movies = Movie::where('$text', ['$search' => '"love story"'])
->get();

browse_moviesビューでクエリ結果を表示するには、 MovieController.phpファイルのshow()関数を次のコードのように編集します。

class MovieController
{
public function show()
{
$movies = Movie::where('$text', ['$search' => '"love story"'])
->get();
return view('browse_movies', [
'movies' => $movies
]);
}
}
Title: Cafè de Flore
Year: 2011
Runtime: 120
IMDB Rating: 7.4
IMDB Votes: 9663
Plot: A love story between a man and woman ...
Title: Paheli
Year: 2005
Runtime: 140
IMDB Rating: 6.7
IMDB Votes: 8909
Plot: A folk tale - supernatural love story about a ghost ...
Title: Por un puèado de besos
Year: 2014
Runtime: 98
IMDB Rating: 6.1
IMDB Votes: 223
Plot: A girl. A boy. A love story ...
...

テキストクエリは、各結果がクエリフィルター内の string にどの程度一致するかを示す数値テキスト スコアを割り当てます。関連性で結果を並べ替えるには、orderBy() メソッドを使用して textScoreメタデータフィールドで並べ替えます。$meta 演算子を使用して、このメタデータにアクセスできます。

$movies = Movie::where('$text', ['$search' => '"love story"'])
->orderBy('score', ['$meta' => 'textScore'])
->get();

Tip

orderBy()メソッドの詳細については、「 クエリ出力の変更 」ガイドの「 クエリ結果のソート 」セクションを参照してください。

Lambda 統合を使用して検索操作を実行する方法を示す実行可能なコード例については、次の使用例を参照してください。

フィルター条件に基づいてデータを取得する方法については、 「データの取得」ガイドを参照してください 。

戻る

Retrieve Data

項目一覧