Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/210.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 是否可以在firebase中使用包含搜索查询?_Android_Firebase_Firebase Realtime Database - Fatal编程技术网

Android 是否可以在firebase中使用包含搜索查询?

Android 是否可以在firebase中使用包含搜索查询?,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,我试过这个: Query firebaseSearchQuery = myRef.orderByChild("from").startAt(searchText).endAt(searchText+"\uf8ff"); 但是我想要这样的东西 Query firebaseSearchQuery = myRef.orderByChild("from").contains(searchText); 有可能吗?您可能需要: Query firebaseSearchQuery = myRef.or

我试过这个:

Query firebaseSearchQuery = 
myRef.orderByChild("from").startAt(searchText).endAt(searchText+"\uf8ff");
但是我想要这样的东西

Query firebaseSearchQuery = 
myRef.orderByChild("from").contains(searchText);
有可能吗?

您可能需要:

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


我想使用firebase是不可能的,它需要特殊的服务才能完成。与高级搜索(类似弹性搜索)有关的服务。

对于小型数据集,您可以使用以下代码:

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 databaseError) {}
};
myRef.addListenerForSingleValueEvent(valueEventListener);
ValueEventListener ValueEventListener=new ValueEventListener(){
@凌驾
公共void onDataChange(DataSnapshot DataSnapshot){
列表=新的ArrayList();
对于(DataSnapshot ds:DataSnapshot.getChildren()){
String from=ds.child(“from”).getValue(String.class);
列表。添加(从);
}
for(字符串str:list){
if(str.contains(searchText)){
Log.d(“标记”,“找到字符串!”);
}
}
}
@凌驾
已取消的公共void(DatabaseError DatabaseError){}
};
myRef.addListenerForSingleValueEvent(valueEventListener);
对于大型数据集,不建议使用此解决方案,因为您需要下载整个节点才能进行搜索。在这种情况下,建议使用或


如果您打算使用,我建议您在此查看我的答案。有关更多信息,我还建议您查看此

抱歉,它没有work@AngeloLucena检查编辑。好的,谢谢,也许我会尝试弹性搜索。你是否尝试过我上面的解决方案,它有效吗?你能详细说明“小数据集”是什么意思吗?一个节点中有多少子节点可以被视为小数据集?@QadirHussain和我一样多你会有相当高的成本,否则你应该实现其中一个第三方服务。