Firebase query - поиск элемента с дочерним элементом, содержащим строку

У меня проблемы с 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". Как это сделать?

Ответ 1

В API запросов нет методов или нечетких совпадений, которые вы, вероятно, уже догадались, если вы сканировали API и руководство по запросам.

Не только обсуждался этот вопрос ad nauseam на SO [1] [2] [3] [4] [5], но я несколько раз затрагивал, почему нужно использовать реальную поисковую систему вместо того, чтобы пытаться выполнить этот тип полусердечного подхода поиска.

Существует причина, по которой веб-сайту Google легче найти результаты, чем использовать встроенный поиск, и это является основным компонентом этой ошибки.

При всем сказанном ответ на ваш вопрос о том, как это сделать вручную, поскольку нет встроенных содержит, заключается в настройке серверного процесса, который загружает/передает данные в память и выполняет ручной поиск содержимого, предпочтительно с каким-то кешированием.

Но, честно говоря, ElasticSearch быстрее и проще и эффективнее здесь. Поскольку это обширная тема, я отложу вас на сообщение в блоге по этому вопросу.