Docs Menu
Docs Home
/ / /
PHP ライブラリ マニュアル
/

Atlas Search

項目一覧

  • Overview
  • Atlas Search インデックス
  • 検索集計ステージ
  • Atlas Search クエリの例
  • フィルター付き複合クエリ
  • オートコンプリートクエリ
  • 検索オプション

このガイドでは、Atlas Search 機能を使用してドキュメントを検索する方法を学習できます。PHP ライブラリを使用すると、集計ビルダを用いて Atlas Search クエリを実行できます。

注意

配置の互換性

Atlas Search 機能は、MongoDB Atlasクラスターに接続する場合にのみ使用できます。この機能は、自己管理型の配置では使用できません。

Atlas Search の詳細については、「 Atlas Search の概要」を参照してください。PHP ライブラリの Atlas Search の実装は、クエリを実行するために内部的に $search 集計演算子を使用します。この演算子の詳細については、Atlas ドキュメントの $search リファレンスを参照してください。

注意

Atlas Vector Search

MongoDBでベクトル埋め込みを検索するには、 Atlas ベクトル検索 APIを使用できます。この機能の詳細については、「 Atlas ベクトル検索ガイド 」を参照してください。

Atlas Search クエリを実行する前に、コレクションに Atlas Searchインデックスを作成する必要があります。このインデックスタイプの作成の詳細については、「 Atlas Search インデックスガイド 」を参照してください。

集計ビルダ を使用して Atlas Search クエリを実行するには、次のクラスをアプリケーションにインポートします。

use MongoDB\Builder\Pipeline;
use MongoDB\Builder\Search;
use MongoDB\Builder\Stage;

集計パイプラインに $search ステージを作成するには、次のアクションを実行します。

  1. パイプラインステージを保存するには、Pipelineインスタンスを作成します。

  2. Atlas Search ステージを作成するには、Stage::search() メソッドを呼び出します。

  3. search() メソッドの本体内で、Search ビルダ クラスのメソッドを使用して、検索クエリの条件を作成します。

次のコードは、基本的な Atlas Search クエリを作成するためのテンプレートを示しています。

$pipeline = new Pipeline(
Stage::search(
/* Atlas Search query specifications
Search::compound(...) */
),
);

このセクションでは、集計ビルダを使用してさまざまなタイプの Atlas Search クエリを実行する方法を学習できます。このセクションの例では、sample_restaurants.restaurants コレクションのサンプル データを使用します。

2 つ以上の演算子を 1 つのクエリに結合するには、Search::compound() メソッドを使用します。このメソッドは、mustfilter などの句に対して名前付き引数を受け取ります。それぞれの句で、Search::text() メソッドを使用して、全文検索を実行する際に検索する文字列を指定します。

この例では、以下の仕様を持つ Atlas Search クエリを実行します。

  • nameフィールドで string "kitchen" を検索するための must 句を含みます

  • cuisine フィールドに "american" が含まれているドキュメントを高くランク付けするために should 句を含めます。

  • borough 値が "Queens" であるドキュメントのみを結果に含める filterフィールドを含めます

$pipeline = new Pipeline(
Stage::search(
Search::compound(
must: [
Search::text(
query: 'kitchen',
path: 'name',
),
],
should: [
Search::text(
query: 'american',
path: 'cuisine',
),
],
filter: [
Search::text(
query: 'Queens',
path: 'borough',
),
],
),
),
Stage::project(
borough: 1,
cuisine: 1,
name: 1
),
Stage::limit(3)
);
$cursor = $collection->aggregate($pipeline);
foreach ($cursor as $doc) {
echo json_encode($doc), PHP_EOL;
}
{"_id":...,"borough":"Queens","cuisine":"American","name":"Kitchen Door"}
{"_id":...,"borough":"Queens","cuisine":"American","name":"Cc Kitchen"}
{"_id":...,"borough":"Queens","cuisine":"American","name":"Suite Kitchen"}
// Results truncated

PHP ライブラリは、コレクション内のドキュメントでオートコンプリート検索を実行するための Search::autocomplete() メソッドを提供します。

このタイプの Atlas Search クエリの詳細については、Atlas ドキュメントの「オートコンプリート リファレンス」を参照してください。

注意

Atlas Search インデックスはオートコンプリート クエリ用に設定する必要があります。詳細については、Atlas ドキュメントの「オートコンプリートのためのフィールドのインデックス作成方法」を参照してください。

次のコードで、name フィールドの "Lucy" という文字列に対して Atlas Search のオートコンプリートクエリが実行されます。

$pipeline = new Pipeline(
Stage::search(
Search::autocomplete(
query: 'Lucy',
path: 'name',
),
),
Stage::limit(3),
Stage::project(_id: 0, name: 1),
);
$cursor = $collection->aggregate($pipeline);
foreach ($cursor as $doc) {
echo json_encode($doc), PHP_EOL;
}
{"name":"Juicy Lucy"}
{"name":"Lucy'S Vietnamese Kitchen"}
{"name":"Lucy'S Cantina Royale"}
// Results Truncated

クエリをカスタマイズするために、次の任意のパラメーターを autocomplete() メソッドに渡すこともできます。

任意のパラメーター
説明
デフォルト値

fuzzy

ファジー検索とファジー検索オプションを有効にします

false

tokenOrder

トークンを検索する順序を指定します

'any'

これらのパラメーターの詳細については、Atlas ドキュメントの autocomplete 演算子リファレンスの「オプション」セクションを参照してください。

search()メソッドを使用して、さまざまな種類の Atlas Search クエリを実行できます。目的のクエリに応じて、次の任意のパラメーターを search() に渡すことができます。

任意のパラメーター
タイプ
説明

index

string

使用する Atlas Search インデックスの名前を指定します

highlight

array

元のコンテキストで検索タームを表示するためのハイライトオプションを指定します

concurrent

bool

専用の検索ノード上でセグメント間の検索クエリを並列化します

count

string

結果の数を取得するためのカウント オプションを指定します。

searchAfter

string

その点の直後から始まるドキュメントを返すための参照点を指定します。

searchBefore

string

その点の直前から始まるドキュメントを返すための参照点を指定します。

scoreDetails

bool

結果のスコアの詳細な内訳を検索するかどうかを指定します

sort

array

結果をソートするフィールドを指定します

returnStoredSource

bool

バックエンド データベースで完全なドキュメント検索を実行するか、Atlas Search から保存されたソースフィールドのみを直接返すかを指定します

tracking

array

検索タームに関する分析情報を検索するための追跡オプションを指定します

これらのパラメータの詳細については、Atlas ドキュメントの $search 演算子参照の「フィールド」セクションを参照してください。

戻る

データ集計