web-dev-qa-db-ja.com

Firebaseクエリ-文字列を含む子を持つアイテムを検索する

Firebase Queryで少し問題があります。オブジェクトの子の値に特定の文字列が含まれているオブジェクトを照会したい。これまでのところ、次のようなものがあります。

Firebase *ref = [[Firebase alloc] initWithUrl:@"https://dinosaur-facts.firebaseio.com/dinosaurs"];
[[[[ref queryOrderedByKey] queryStartingAtValue:@"b"] queryEndingAtValue:@"b~"]
    observeEventType:FEventTypeChildAdded withBlock:^(FDataSnapshot *snapshot) {
    NSLog(@"%@", snapshot.key);
}];

しかし、これは「b」の開始値を持つオブジェクトのみを提供します。文字列「b」を含むオブジェクトが必要です。それ、どうやったら出来るの?

17
Holger Sindbaek

クエリAPIには包含またはファジーマッチングメソッドはありません。これは、おそらく API および クエリのガイド をスキャンしたことがあるかどうかはすでに推測されています。

SO [ 1 ] [ 2 ] []について、この主題について話し合うだけでなく、 [ 4 ] [ 5 ]が、なぜこのようなことを試みるのではなく、なぜ 実際の検索エンジンを使用する なのかについて何度か触れました。中途半端な検索アプローチの。

多くの場合、組み込みの検索を使用するよりも、ウェブサイトをGoogleで検索して検索する方が簡単な理由があります。これがその失敗の主要なコンポーネントです。

以上のことすべてを踏まえて、組み込みのコンテナがないため、手動でこれを行う方法に関する質問への答えは、データをメモリにロード/ストリーミングし、コンテンツを手動で検索するサーバー側プロセスを設定することです、できればある種のキャッシングを使って。

しかし正直なところ、ElasticSearchの方が高速でシンプルであり、効率的です。それは広大なトピックなので、 この件に関するブログ投稿 までお送りします。

10
Kato