Firebase query - Find item with child that contains string

18,192

There are no contains or fuzzy matching methods in the query API, which you have probably already guessed if you've scanned the API and the guide on queries.

Not only has this subject been discussed ad nauseam on SO [1] [2] [3] [4] [5], but I've touched several times on why one should use a real search engine, instead of attempting this sort of half-hearted search approach.

There is a reason it's often easier to Google a website to find results than to use the built-in search, and this is a primary component of that failure.

With all of that said, the answer to your question of how to do this manually, since there is no built-in contains, is to set up a server-side process that loads/streams data into memory and does manual searching of the contents, preferably with some sort of caching.

But honestly, ElasticSearch is faster and simpler, and more efficient here. Since that's a vast topic, I'll defer you to the blog post on this subject.

Share:
18,192

Related videos on Youtube

Holger Sindbaek
Author by

Holger Sindbaek

I'm a designer and developer from Denmark. Lately I've been working on some online solitaire card games: https://online-solitaire.com/.

Updated on July 14, 2022

Comments

  • Holger Sindbaek
    Holger Sindbaek almost 2 years

    I'm having a bit of trouble with a Firebase Query. I want to query for objects, where the objects child value contains a certain string. So far I have something that looks like this:

    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);
    }];
    

    But that only gives objects that have a starting value of "b". I want objects that contains the string "b". How do I do that?