Consulta de Firebase: busca el elemento con el elemento secundario que contiene cadena

Estoy teniendo problemas con una consulta de Firebase. Deseo consultar objetos, donde el valor hijo de los objetos contiene una cierta cadena. Hasta ahora tengo algo que se ve así:

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

Pero eso solo da objetos que tienen un valor inicial de “b”. Quiero objetos que contengan la cadena “b”. ¿Cómo puedo hacer eso?

No hay métodos de combinación de contenido o difusos en la API de consulta, que probablemente ya haya adivinado si ha escaneado la API y la guía de consultas .

No solo se ha discutido este tema hasta la saciedad en SO [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ], sino que he tocado varias veces la razón por la cual uno debería usar un motor de búsqueda real , en lugar de intentar este tipo de enfoque de búsqueda a medias.

Hay una razón por la que a menudo es más fácil buscar en Google un sitio web para encontrar resultados que utilizar la búsqueda integrada, y este es un componente principal de ese error.

Con todo esto dicho, la respuesta a su pregunta de cómo hacerlo manualmente, ya que no hay un contenido incorporado, es configurar un proceso del lado del servidor que cargue / transmita datos a la memoria y realice una búsqueda manual de los contenidos. , preferiblemente con algún tipo de almacenamiento en caché.

Pero, sinceramente, ElasticSearch es más rápido y sencillo, y más eficiente aquí. Como se trata de un tema extenso, te remitiré a la publicación del blog sobre este tema .