>_tech-draft
Firebaseのアイコン
Firebase
動画公開日
タイトル

Full text search is finally here for Firestore!

再生時間

3分 35秒

Firestore Enterpriseで実現!強力な全文検索機能を活用する方法

ポイント

  • Firestore Enterprise Editionで利用可能になった全文検索機能は、長年の開発者要望に応える強力なキーワード検索機能です。
  • 本記事は、サードパーティ連携によるコスト増や統合の複雑さを解消し、ベクター検索のオーバーヘッドなしで効率的な検索を実現するメリットを説明します。
  • Google Cloud Consoleでのインデックス作成からパイプラインクエリでの利用方法まで、Firestore Enterpriseの全文検索導入手順を詳細に解説します。

Firestore Enterpriseで実現!強力な全文検索機能を活用する方法

導入:Fire Storeにおける長年の課題と待望の機能

Google CloudのFirestoreが開発者に提供されてから約8年が経過しました。この長きにわたり、開発者コミュニティから最も頻繁に寄せられた機能リクエストの一つが「全文検索」機能の実装でした。そしてこの度、ついにFirestore Enterprise Editionにおいて、この待望の全文検索機能が利用可能になったことを発表いたします。

本記事では、この新しい全文検索機能をFirestoreアプリケーションに統合する方法について詳しく見ていきます。例えば、私が作成した課題トラッカーアプリケーションのように、キーワードに基づいて課題を素早くフィルタリングしたいといった場合に、この機能がいかに強力な解決策となるかをご紹介します。

従来の課題とFirestore Enterpriseによる解決

サードパーティ検索プロバイダの課題

Firestore Enterpriseで全文検索が利用可能になるまで、開発者はこの機能を実現するためにサードパーティの検索プロバイダと連携する必要がありました。これはある程度の解決策を提供しましたが、いくつかの課題も伴いました。

  • コンピューティングコストの増加: Firestoreのデータを外部の検索サービスにエクスポートしてインデックス化する必要があるため、追加のコンピューティングリソースが必要となり、コストが増大します。
  • 外部サービスへの課金: サードパーティの検索サービスを利用することで、そのサービスに対する追加の課金が発生します。
  • 統合の複雑さ: 外部サービスとの連携は、データの同期やエラーハンドリングなど、アプリケーションの統合ロジックを複雑にする要因にもなります。

Firestore Enterpriseの全文検索機能は、これらの課題を解決します。Firestoreに直接統合されているため、外部サービスへのデータエクスポートが不要になり、コンピューティングコストと外部サービスの課金コストの両方を削減できるのです。すべてがシームレスに統合されるため、開発体験も向上します。

ベクター検索の代替案とその考慮事項

全文検索の代替案として、ベクター検索を使用することも考えられます。ベクター検索は、リクエストからセマンティックな(意味的な)情報を容易に把握できるという利点があります。これにより、より高度な検索体験を提供できます。

しかし、ベクター検索にもいくつかの考慮事項があります。

  • 追加のオーバーヘッド: コンテンツの埋め込み(embeddings)を生成するためにGemini APIへのリクエストを送信したり、検索リクエストに対しても埋め込みを生成したりするための追加のオーバーヘッドが発生します。
  • チャンク化戦略: コンテンツが大きすぎて一度に埋め込みを生成できない場合、コンテンツをより小さなチャンクに分割するための「チャンク化戦略」を考案する必要があります。これは実装を複雑にする可能性があります。

Firestore Enterpriseの全文検索は、このようなベクター検索の複雑な側面を回避しつつ、キーワードベースの強力な検索機能を提供します。

全文検索インデックスの作成手順

Firestore Enterpriseで全文検索を利用するには、まず検索対象の用語のインデックスを作成する必要があります。以下にその手順を詳しく説明します。

  1. Google Cloud Consoleへ移動: Google Cloud Consoleにアクセスし、Firestoreのページに移動します。
  2. インデックス画面へ: 左側のナビゲーションメニューから「インデックス」画面を選択します。
  3. 検索インデックスの作成: インデックス画面で「インデックスを作成」オプションを選択し、次に「検索インデックスを作成」を選択します。
  4. インデックスの設定: 検索インデックス作成画面で、以下の情報を指定します。
    • インデックス名: 任意のインデックス名を指定します。
    • 検索タイプ: text(テキスト検索)またはgeo(地理空間検索)から選択します。今回はtextを選択します。
    • コレクションID: 検索対象となるコレクションのIDを指定します。私の課題トラッカーの例では、課題が保存されているissuesコレクションIDを指定します。
    • フィールド: 全文検索のインデックスを作成したいフィールド(例: 課題のタイトルや説明文など)を指定します。
  5. クエリスコープの選択: クエリスコープを選択します。私の例では「コレクションスコープ」を使用します。コレクションスコープとコレクショングループの違いについては、Morganの素晴らしい解説動画がありますので、本記事の末尾の参考動画をご確認ください。
  6. インデックスの作成: 設定が完了したら「作成」ボタンをクリックします。

インデックスの構築には数分かかります。構築が完了するまでしばらくお待ちください。

全文検索のクエリ方法

インデックスが構築されたら、パイプラインクエリ(pipeline queries)に対してsearch修飾子を使用することで、コレクションに対するクエリを開始できます。この機能により、単一の検索語句だけでなく、検索語句を否定したり、複数の検索語句を組み合わせたりすることも可能です。

具体的なコードは示されていませんが、コレクションに対して検索リクエストを含むパイプラインクエリを実行することで、全文検索を利用できます。

アプリケーションでの具体例

私の課題トラッカーアプリケーションで、実際に全文検索を使ってみましょう。このアプリケーションには合計で約500件の課題が登録されています。

  • 基本的な検索: 「storage」というキーワードでクエリを実行すると、67件の課題が検索結果として返されました。
  • 検索語句の否定: 次に、「-token」という否定トークンを追加してクエリを実行します(例: 「storage -token」)。これにより、検索結果は62件に減少しました。

このように、わずか数行の短い記述で、Firestore Enterpriseデータベースに対して強力な全文検索クエリを実行できるのです。

まとめ

Firestore Enterprise Editionで利用可能になった全文検索機能は、長年の開発者の要望に応える画期的な機能です。外部のサードパーティ検索プロバイダに依存することなく、またベクター検索の複雑さを伴うことなく、Firestoreデータベース内で直接、効率的かつ強力なキーワードベースの検索を実現できます。

本記事でご紹介したように、インデックスの作成からクエリの実行まで、非常にシンプルな手順で導入が可能です。ぜひこの新機能を活用し、皆様のアプリケーションに高度な検索体験を統合してみてください。

参考動画