Docs Menu
Docs Home
/ / /
Lambda MongoDB
/ /

検索テキスト

このガイドでは、 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

項目一覧

  • Overview
  • 始める前に
  • 検索テキスト フィールド
  • 検索スコア
  • 詳細情報