2017-01-07 8 views
0

私は、例えば "My name is John"という文字列をFirebaseに格納しています。firebaseクエリとスウィフト

にはどうすればいいので、私は「ジョン」を持っているFirebase内のすべての記事を見つけることができますfirebase照会でしょうか?

私が今使用して、文字列の最初の項を検索することができます

DataService.dataService.BASE_REF.child("Posts").child(selectedComment.commentKey).queryOrderedByChild("userComment").queryStartingAtValue(comment).queryEndingAtValue(comment+"\u{F8FF}").observeSingleEventOfType(.Value, withBlock: { (snapshot) in 

コメント=「マイ」

私はFirebaseと弾性検索を使用して読んなく、あったかどうかを確認したかったです私はFirebaseためElasticSearch /懐中電灯を見て前にFirebaseで簡単な方法は、

+0

すべての投稿をダウンロードし、Swiftで検索することができます。最もエレガントなソリューションではありません。 。とにかくFirebaseのドキュメントでは、検索の例を見ることができます:https://firebase.google.com/docs/reference/js/firebase.database.Query –

+0

答えは受け入れられましたが、問題はまだ別のライブラリに依存しています部分文字列(ワイルドカード)検索を行います。あなたはこれを自分で行うことができます - それは容易ではありませんが、コードを制御します。私の答えは、この質問[Wilcardクエリ](http://stackoverflow.com/questions/36365157/wildcard-query-on-firebase/36366619#36366619)を参照してください。あなたの場合、単語全体を検索する場合は、自動的に文を解析して各単語を保存するパーサを作成します。次に、部分文字列検索は超高速です。それはたくさんのコードではなく、ディスクスペースも安いので別のオプションです。 – Jay

+0

DIYソリューションは、ファイヤーベースの仕組みによって複雑になります。任意のコレクションでテキストの一致を検索するには、コレクション全体をクライアントにダウンロードする必要があります。少量のデータでは、クライアント側の検索は確かに最も簡単なオプションだと思います。しかし、些細なコレクションサイズと帯域幅/ cpuの制約を超えるものは、自明ではありません。私の経験上、この点は思ったよりもずっと早く到着します。つまり、非常に大規模なコレクションが不合理になることはありません。 – Brandon

答えて

1

残念ながら、Firebaseは、(任意の言語SDKで)そのようなコンテンツを通して検索をサポートしていません。 7月'16でGoogle Groups Postから:

検索を理解している企業として、我々はまた、 が仕事に最適なツールを使用して理解している企業です。ファジーマッチングでは、 が含まれているため、NoSQLのリアルタイムデータストアは適切なツールではありません。これらの クエリの処理速度が遅く、スケールが悪くなります。 BigQueryまたはElasticSearchは、 の方法でスケーラブルで堅牢な便利な結果を提供するための適切なツールです。

これは、 のサンプル懐中電灯の説明で説明したように、 の検索結果をリアルタイムデータと同期させるための小さなノードスクリプトを展開することです。将来的には、FirebaseとCloud 製品、特にCloud FunctionsとBigQueryの相互運用性の間の統合を追加していくと、より簡単に になります。私はそれを理解するよう

BigQueryは、特にユーザー向けの検索のために設計されていない、です。

Elasticsearch(具体的には、Firebaseプラグイン​​)は潜在的な解決策ですが、暗に述べたように、ESクラスタの配備/管理やプラグインの設定などのオーバーヘッドは非常に大きいです。その時間/ $を正当化するためにコンテンツの検索がアプリの重要な部分である場合は、サービスの最も弱い分野の1つであるため、データベースのニーズにFirebaseを超えたソリューションを検討することができます。私の意見で

、あなたは​​を超え、いくつかのオプションがあります:

  1. Algolia、検索サービスとしての提供、does offer integration with Firebaseを、私は&それを使ったことがないので、提供することはできませんそれが存在すると言うよりはるかに多くの。

  2. 別の方法としては、他のバックエンドサービスとしてのそれを考慮&ニーズ、プロジェクトの段階に応じてAWS Cloud Search

  3. のように、あなたは別のサービスに検索したい文書のコレクションを維持する可能性がありますクエリの面でより多くのサポート。たとえば、Scaphold.io、Graph.cool、ReindexなどのGraphQL-as-a-serviceバックエンドはすべてSQLデータベース上に構築されており、複数の種類のクエリをサポートしています。

関連する問題