Firestore 全文検索パッケージ


Firestore で全文検索機能が必要な場合、選択肢は限られています... 今までは. Firebase は Algolia を推奨しています.はい、Google では、Google 製品に検索機能を持たせるために、Google 製品ではなく Algolia を推奨しています.余談です.基本的に、次のオプションがあります.

  • Algolia - セミはリレーショナル データをサポートします

  • Elastic Search - 多くのフォークもありますが、最終的にはすぐに使用できるすべてのオプションがあるわけではありません

  • MeiliSearch - 自分でホストする... here を参照

  • Typesense - 自己ホスティングも

  • Zinc Search - 軽量、自己ホスティング

  • また、firebase トリガー関数を使用してデータを接続できるほとんどすべての検索エンジンを使用することもできます.しかし、私は自分のデータを Firebase に保存したいと思っています.

    私は他のみんなと同じように Firestore を持っていますが、Firestore でインデックスを作成することにより、Firestore でデータを全文検索できるようにするパッケージを作成しました.これを行うには 3 つの異なるアイデアがありましたが、私の記事については here を参照してください.ほとんどの人に適していると思われるパッケージは 1 つだけです...

    関連検索



    1.) npm i adv-firestore-functions
    2.) 次のように関数を onWrite トリガー関数に追加します.

    import { soundex, relevantIndex } from 'adv-firestore-functions';
    
    ...
    functions.firestore
        .document('posts/{docId}')
        .onWrite(async (change: any, context: any) => {
    
    ...
    
       await relevantIndex(change, context, {
          fields: ['content', 'summary'],
          filterFunc: soundex
       });
    
    }
    


    soundex 関数を使用すると、あいまい検索を実行できます.完璧ではありませんが、ほとんどのニーズに対応できるはずです.使用したくない場合、または独自の変更アルゴリズムを使用したい場合に備えて、オプションにしました.

    3.) 新しい投稿 (または任意のコレクション) の追加/編集/削除 - すべてがバックエンドで自動的に変更および更新されます.

    4.) コレクションと _search および _events コレクションのルールを必ず追加してください.どちらも Firestore によって書き込み可能である必要がありますが、_search はクライアント側で誰でも読み取り可能である必要があります.

    5.) 事前に作成した Firestore Callable Function を使用して、フロント エンドでインデックス付きデータを読み取ります.

    import { relevantSearch } from 'adv-firestore-functions';
    ...
    
    exports.searchPosts = functions.https.onCall((q, context) => {
    
      return await relevantSearch({
        query: q.query,
        col: 'posts',
      });
    ...
    }
    


    またはあなた自身を書いてください:

  • Observable Version - これは私のトライグラム検索ですが、前提は同じです

  • Promise Version - バックエンド バージョンはフロント エンドに簡単に実装できます

  • 他のニーズがある場合は、私の他の検索をチェックしてください.

  • Which Full-Text Search Index Do I Use? - 私の Fireblog.io

  • adv-firestore-functions - GitHub プロジェクト

  • Firestore の使用が完了している場合と完了していない場合がありますが、 を参照してください.このパッケージは少し前に作成し、共有する必要がありました.

    問題やアイデアがある場合は、GitHub に投稿してください.

    ありがとう、

    J