メッセージの検索(撃沈編)まず最初に述べておきますが本日の記事は、「想定していた機能が作れなかった」撃沈編となりますorz最後まで読んでも検索機能は完成しませんのでご容赦下さい。partyツールを使うのが定石の様です。Datastore上でやってしまいたい病に長く罹患していた私はFirestoreだけで機能が実現できないかをまず考えました。Datastoreでは全文検索機能を実装した前歴がありました。Calendarで書いた下のあたりのハナシになります。mode)用語でざっくり言うと「テキストを形態素解析やn-gramで分割してarrayフィールドに突っ込んでおき、それをarray-containsで検索する」になります。詳しいひとはこの時点でどう撃沈したのかピンとくるかもしれませんが続けます。実装テキスト分割Javascript上で形態素解析を行うのは面倒そうなのでとりあえずbigram(テキストを2文字ずつに分割)でインデックスを作成することにしました。Functionsをつかえばドキュメント保存をトリガーにして形態素解析を行なってインデックス保存することも容易にできそうな気がしますが、ここでは行いません。bigram関数です。Array.from(resultSet);}次にメッセージの追加です。});}arrayフィールドに対するインデックスを複合インデックスで組み合わせるとそれらの組み合わせ分インデックスが作られてしまう問題があります(俗に言うインデックス爆発)。これを避ける為、単一のindexesフィールドに複数の異なる検索インデックスをまとめて保存しています。どのインデックスかはプレフィックスで区別つけられる様にしています。つけて保存しています。})}ユーザーの入力値もbigramで分割して全てをarray-containsで検索しています。「membersフィールドにサインインユーザーが含まれていること」と、「ユーザー入力のbigramが全てインデックスに含まれていること」を一つのクエリでフィルタしています。最後にインデックスを追加します。},実際はルールも書き換えないといけないですが、ここでは(最終的に別の問題で失敗しており本質的でないので)割愛します。party頼った方がよさそうですね(高機能ですし)。Calendar眺めてたらちょうど良い記事がありましたのでリンク貼らせてもらいます。メッセージの登録と一覧取得を行います。(2)月別アーカイブリンクはてなブログブログをはじめる週刊はてなブログはてなブログPro参加グループプログラミングテクノロジーはてなブログをはじめよう!knightsoさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。