2019年1月4日0件のコメントfirebaseとAlgolaを連携した全文検索のトライアルをやってみました。公式ドキュメントを読みつつ手探りで設定してみましたので手順をまとめておきます。実装した機能概要firabaseのDatabase「CloudFirestore」でデータをホスティング。firabaseのFunctionsにてCloudFirestoreの特定コレクションを監視、ドキュメントが追加されるたびにAlgoliaのIndexを更新する。フロントからAlgoliaのAPI呼び出し、Indexから検索結果を取得する。Algoliaにアカウントを登録する。アカウントを作成してください。こちらからアカウントを登録しましょう。Indexを作成する。Index」をぽちっとしてIndexを作成してください。※Indexの名称は後で使いますのでメモ。Keys」からAPIキーを参照することができます。今回使用したキーは以下の3つです。環境変数の設定AlgoliaのAPIキーたちをFunctionsのプロジェクト内で参照する環境変数として設定します。ソースにべた書きでもいいと思うのですが公式ドキュメントでも環境変数を使用していたので、やってみました。Functionsのプロジェクトフォルダでコンソールから以下のコマンドを実行します。Key★この辺のコマンドの説明は以下の公式ドキュメントを参考にしました。作成したCloudFunctionsのソースは以下です。index.saveObject(data)})こんだけです。objectID(ドキュメントのID)をIndexするオブジェクトに追加していますが、こうしておくことで、Algoliaの返却レコードとFirebaseのドキュメントを紐づけることができますので、必ず設定してください。(ドキュメントのIDもドキュメントのオブジェクトとして返却してくれればいいのに...、私は似たような処理を色んなとこで実装しています。)これでコレクションに新規レコードが追加されると、追加されたレコードをAlgoliaにIndexしてくれます。公式ドキュメントで紹介されているソースをほぼそのままですので、公式ドキュメントと合わせて読んでいただけるといいかと思います。参考:Firebase公式ドキュメント「全文検索」Indexタイミングを新規レコード作成だけでなく、レコードのアップデートなどもIndexすることも可能です。以下にFunctionsで検知可能なFirestoreのイベントトリガがまとまっています。Functionsのデプロイ以下のコマンドでデプロイできます。初期化と、index.searchの呼び出しを追加すればOKです。こちらも公式ドキュメントを参考にしています。ドキュメントでは、「index.seach」とスペルミスが...さいごに思ったよりも簡単に実装することができたなと思います。コレクションが増えるたびにFunctionsへ追加してってやってくのもしんどいなぁと思ったり。なんどもAPI呼び出しするのもお金の問題で不安もあるし、そこまで何度もIndexしなくてもいいような気もしています。この辺をコントロールするにはどうしたらいいのか見当していきたいと思います。カツオが開発したWebサービスです。「セールサーチ」ネットショップのセール情報の検索サイト!平成の想い出を気軽に年表にしてシェアすることができるサービスです。コメントをキャンセルメールアドレスが公開されることはありません。非エンジニアが個人開発したWebサービスをリリースしてみてfirestoreのセキュリティルール設定(firebaseでユーザー・役割ごとの権限制御)最近のコメント33歳。起業について思うこと。