Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is there a way to search sub string at Firestore?

If there is a String named 'California' at firestore database and i want to search from android app as 'Cali' then the firebase should return me California. How can i do that query?

There has some function at firestore like,

db.collection("cities").whereEqualTo("name", "Cali")
 db.collection("cities").whereLessThan("name", "Cali")
 db.collection("cities").whereGreaterThanOrEqualTo("name", "Cali")
 db.collection("cities").whereGreaterThan("name", "Cali")
 db.collection("cities").whereGreaterThanOrEqualTo("name", "Cali")

But i need a function like as,

db.collection("cities").whereContain("name", "Cali")

which should return full string that contains 'Cali' substring.

like image 321
Rezaul Karim Avatar asked Mar 08 '23 16:03

Rezaul Karim


1 Answers

Unfortunately, there is no query in Firestore that looks like this:

db.collection("cities").whereContains("name", "Cali")

But for small datasets, there is a workaround that can help you solve this, which is by querying the database to get all city names and use contains() method like this:

String str1 = document.getString("yourProperty");
String str2 = "Cali";
boolean b = str1.toLowerCase().contains(str2.toLowerCase());

If you'll try to print the value of b, you'll see that is true. But the above examples works well enough only for small datasets, it doesn't work for large datasets and this is because downloading an entire collection to search for fields client-side isn't practical. In this case, as the official documentation recommends:

To enable full text search of your Cloud Firestore data, use a third-party search service like Algolia.

For a concrete example, please also see my answer from this post.

like image 162
Alex Mamo Avatar answered Mar 10 '23 09:03

Alex Mamo