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和我一样多你会有相当高的成本,否则你应该实现其中一个第三方服务。