Te sugerimos que revises esta respuesta en un entorno controlado antes de pasarlo a producción, un saludo.
Solución:
En mi caso pude lograr en parte un SQL LIKE de la siguiente manera:
databaseReference.orderByChild('_searchLastName')
.startAt(queryText)
.endAt(queryText+"uf8ff")
El personaje uf8ff
utilizado en la consulta es un punto de código muy alto en el rango Unicode (es un área de uso privado [PUA] código). Debido a que está después de la mayoría de los caracteres regulares en Unicode, la consulta coincide con todos los valores que comienzan con queryText
.
De esta forma, buscando por “Fre” pude obtener los registros que tuvieran como valor “Fred, Freddy, Frey” en _searchLastName
propiedad de la base de datos.
Crear dos variables de cadena
searchInputToLower = inputText.getText().toString().toLowerCase();
searchInputTOUpper = inputText.getText().toString().toUpperCase();
Luego, en la Consulta, configúrelo en:
DatabaseReference reference = FirebaseDatabase.getInstance().getReference().child("Products");//Your firebase node you want to search inside..
FirebaseRecyclerOptions options =
new FirebaseRecyclerOptions.Builder()//the Products is a class that get and set Strings from Firebase Database.
.setQuery(reference.orderByChild("name").startAt(searchInputUpper).endAt(searchInputLower + "uf8ff"),Products.class)
.build();
el “nombre” es el nodo dentro del Nodo Principal de Productos.
el .startAt(searchInputUpper) & .endAt(searchInputLower + “uf8ff”) para realizar la búsqueda contiene todos los caracteres que se escribieron en el inputText.getText() que obtiene.
Sección de Reseñas y Valoraciones
Recuerda dar recomendación a esta crónica si te fue de ayuda.