LoginSignup
1
0

More than 1 year has passed since last update.

Cloud Firestore(+Cloud Functions)で関連度つき全文検索をするやり方

Last updated at Posted at 2021-09-05

概要

Firestoreには全文検索機能はないため、通常であればElasticsearchなどの外部サービスを利用する必要が出てくるわけですが、それを使わずにFirestore(とCloud Functions)で全文検索できるようにするやり方を紹介します。
内容的には、Firestore(+Cloud Functions)で関連度つき全文検索をできるようにした話 で紹介したソースコードの使い方の解説になります。

前提

  • 課金できるGCPアカウントを持っていること(Firestoreで必要)
  • gcloudコマンドを実行できる環境があること(推奨)
    • なければ ここ を参考にインストールする
    • なくても手動でデプロイすればいけるので、必須ではない

大まかな流れ

  • Consoleからプロジェクトを作成
  • Cloud Firestoreをセットアップする
  • Cloud Funcionsの関数をデプロイする

すでにセットアップ済みの部分は適宜飛ばしてください。

Consoleからプロジェクトを作成

GCPのWebコンソール の上部にある、∴プロジェクト名▼ のところからプロジェクトを作成するか、プロジェクト作成ページに直接アクセスしてプロジェクトを作成する。
 image.png

Cloud Firestoreをセットアップする

1. Firestoreをネイティブモードで開始

Firestoreのプロダクトページに移動し、ネイティブモードを選択をクリックし、続いて表示されるページでリージョンを選択してデータベースを作成する。
このとき、選択するリージョンは後々作成するCloud Functionsと同じものにする必要がある(検索速度維持のため)。
image.png

image.png

2. Firebaseを有効にする

データベース作成が完了したらFirestoreのデータベースのページが表示されているはずなので、そこの左側にあるセキュリティルールをクリックし、ページ遷移先にあるFIREBASEを有効にするボタンをクリックする。

image.png

image.png

Cloud Functionsの関数をデプロイする

1. Cloud Build APIを有効にする

Cloud Functionsの関数をデプロイするために必要なので、以下のURLにアクセスしてCloud Build APIを有効にする。
https://console.cloud.google.com/apis/library/cloudbuild.googleapis.com
image.png

2. Cloud Functionsの関数をデプロイする

以上で設定が終わったので、次は関数をデプロイして実際にテキストを格納・検索できるかどうかを確認します。
以下、gcloudでのデプロイ方法を解説しますが、当然コンソールからデプロイすることも可能です。その場合はリージョンをFirestoreと同じものにすること、メモリを2GB以上にすることを忘れないでください。

  1. gcloud config set project [プロジェクトID] でプロジェクトを切り替えて
  2. デプロイするファイル(main.pyrequirements.txt)が存在するディレクトリに移動して
  3. main.py中のFirebaseプロジェクト名を、今回作成したプロジェクトのIDに置き換えて
  4. 以下のコマンドでデプロイする
    gcloud functions deploy [function名] --entry-point main --runtime python38 --trigger-http --allow-unauthenticated --region [Firestoreのリージョン] --memory 2048MB

3. HTTPのトリガーURLにアクセスしてデプロイできたか確認する

以下が正常に行えるかを確認する:

  1. テキストをFirestoreに入れる
    https://[トリガーURL]?method=index&text=テストです
  2. 検索する
    https://[トリガーURL]?method=search&q=テスト
  3. 削除する
    https://[トリガーURL]?method=delete&q=[テキストのdoc_id]

以上です。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0