Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/193.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.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
Java 使用whereGreaterThanOrEqualTo在字符串中间查找子字符串_Java_Android_Google Cloud Firestore - Fatal编程技术网

Java 使用whereGreaterThanOrEqualTo在字符串中间查找子字符串

Java 使用whereGreaterThanOrEqualTo在字符串中间查找子字符串,java,android,google-cloud-firestore,Java,Android,Google Cloud Firestore,我正在使用firestore中的数据创建一个autoCompleteTextView 我的firestore云构建如下: 例如,我有两个用户名: UserName 1 = "he is ok, ben" UserName 2 = "ben is ok" 为了自动完成名称,我使用以下方法搜索云: db.collection( "Names" ) .whereGreaterThanOrEqualTo("User

我正在使用firestore中的数据创建一个
autoCompleteTextView

我的firestore云构建如下:

例如,我有两个用户名:

UserName 1 = "he is ok, ben"
UserName 2 = "ben is ok"
为了自动完成名称,我使用以下方法搜索云:

db.collection( "Names" )
        .whereGreaterThanOrEqualTo("UserName", s.toString() ).whereLessThanOrEqualTo( "UserName", s.toString() + "\uF7FF" ).get()
        .addOnCompleteListener( new OnCompleteListener<QuerySnapshot>() {
            @Override
            public void onComplete(@NonNull Task<QuerySnapshot> task) {
                if (task.isSuccessful()) {
                    for (QueryDocumentSnapshot document : task.getResult()) {
                        String name = document.getString( "UserName" );
                        names.add( name );
                    }

                }

            }
        } );
db.collection(“名称”)
.whereGreaterThanOrEqualTo(“用户名”,s.toString())。whereLessThanOrEqualTo(“用户名”,s.toString()+“\uF7FF”)。get()
.addOnCompleteListener(新的OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
if(task.issusccessful()){
对于(QueryDocumentSnapshot文档:task.getResult()){
字符串名称=document.getString(“用户名”);
名称。添加(名称);
}
}
}
} );
现在,例如,如果我键入
“be”
,上面的代码运行良好,并找到用户名2的结果(
ben是ok
),但找不到第一个,因为用户名不是以ben开头的

只要“be”是子字符串,如何确保它找到任何用户名

我还尝试将数据更改为数组,其外观如下:

并执行
whererraycontains
。同样,只有当我从数组中键入一个完整的单词时,这个解决方案才有效(例如,如果我写了
be
我没有得到任何结果,并且只有当我写了
ben
它才有效,因为ben是数组对象的完整部分)


有什么方法可以从字符串或数组中找到子字符串,无论它出现在句子的哪个位置?

Firestore不提供子字符串查询,因为它们不能有效地扩展。Firestore不提供子字符串查询,因为它们不能有效地扩展。