'It is possible to have a contains search query in firebase? [duplicate]

I tried this:

Query firebaseSearchQuery = 
myRef.orderByChild("from").startAt(searchText).endAt(searchText+"\uf8ff");

but i want something like this

Query firebaseSearchQuery = 
myRef.orderByChild("from").contains(searchText);

it is possible ?



Solution 1:[1]

For small datasets you can use the following code:

ValueEventListener valueEventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        List<String> list = new ArrayList<>();
        for(DataSnapshot ds : dataSnapshot.getChildren()) {
            String from = ds.child("from").getValue(String.class);
            list.add(from);
        }

        for(String str : list) {
            if(str.contains(searchText)) {
                Log.d("TAG", "String found!");
            }
        }
    }

    @Override
    public void onCancelled(DatabaseError error) {
        Log.d("TAG", error.getMessage()); //Never ignore potential errors!
    }
};
myRef.addListenerForSingleValueEvent(valueEventListener);

This solution is not recommended for large datasets because you'll need to download the entire node in order to make a search. In this case, Algolia or Elasticsearch are recommended.

If you intend to use Cloud Firestore, I recommend you to see my answer from this post. For more information, I also recommend you see this video.

Solution 2:[2]

You need maybe this:

Query firebaseSearchQuery = myRef.orderByChild("from").equalTo(searchText + "\uf8ff");

EDIT

I guess it is not possible using firebase, it needs a special service in order to be done. A service that has to do with advanced searching (something like elastic search).

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1
Solution 2