Firebase 任何人都可以在dart中优化此代码。我正在为每个单词制作搜索过滤器
我需要为firebase添加搜索过滤器,以便轻松准确地获得搜索结果 我在这里修改代码Firebase 任何人都可以在dart中优化此代码。我正在为每个单词制作搜索过滤器,firebase,flutter,search,dart,firebase-realtime-database,Firebase,Flutter,Search,Dart,Firebase Realtime Database,我需要为firebase添加搜索过滤器,以便轻松准确地获得搜索结果 我在这里修改代码 void main(){ 打印(setSearchParam(“Dr apj abdul Kalam”); } setSearchParam(字符串案例编号){ List caseSearchList=List(); 字符串temp=“”; 字符串temp2=“”; 字符串temp3=“”; if(caseNumber.split(“”)长度>1){ 字符串firstWord=caseNumber.split(
void main(){
打印(setSearchParam(“Dr apj abdul Kalam”);
}
setSearchParam(字符串案例编号){
List caseSearchList=List();
字符串temp=“”;
字符串temp2=“”;
字符串temp3=“”;
if(caseNumber.split(“”)长度>1){
字符串firstWord=caseNumber.split(“”[0];
字符串secondWord=caseNumber.split(“”[1];
字符串thirdWord=caseNumber.split(“”[2];
for(int i=0;i
输出类似于每个单词字母的列表=[D,Dr,a,ap,apj,a,ab,abd,abdu,abdul]
我正在将这些列表推送到firebase,这样我就可以很容易地获得搜索结果。。。
如果有在firebase搜索的替代方案,请让我知道
如果还有人不理解我的问题,请查看我上面提供的链接。正如jamesdlin也提到的,您的代码可以进行大量优化 我尝试在这里制作一个更优化的版本,它也适用于任何大小和任意字数的字符串:
void main() {
print(setSearchParam("Dr apj abdul Kalam"));
// [D, Dr, a, ap, apj, a, ab, abd, abdu, abdul, K, Ka, Kal, Kala, Kalam]
print(searchParamWord('test'));
}
List<String> setSearchParam(String caseNumber) =>
caseNumber.split(' ').expand(searchParamWord).toList();
Iterable<String> searchParamWord(String word) sync* {
final sb = StringBuffer();
for (var i = 0; i < word.length; i++) {
yield (sb..writeCharCode(word.codeUnitAt(i))).toString();
}
}
void main(){
打印(setSearchParam(“Dr apj abdul Kalam”);
//[D,Dr,a,ap,apj,a,ab,abd,abdu,abdul,K,Ka,Kal,Kala,Kalam]
打印(searchParamWord(‘test’);
}
列表setSearchParam(字符串caseNumber)=>
caseNumber.split(“”).expand(searchParamWord.toList();
Iterable searchParamWord(字符串字)同步*{
最终sb=StringBuffer();
for(变量i=0;i
我已经将代码的逻辑分为两部分
searchParamWord
获取一个单词并将其拆分为其组件,如“(t,te,tes,test)”并返回一个惰性计算迭代器。然后,在setSearchParam
中,我们可以使用该迭代器,将长字符串拆分为每个单独的单词。1。你的帖子会更适合你。2.不要对caseNumber.split(“”)进行相同的调用。2.创建一个函数来返回给定字符串的所有前缀列表,这样就不需要该代码的四个副本。3.处理split()?而是迭代每个单词,对每个单词调用helper函数,并合并前缀列表。(如果希望避免单独的合并步骤,也可以将helper函数直接附加到现有列表中。)
void main() {
print(setSearchParam("Dr apj abdul Kalam"));
// [D, Dr, a, ap, apj, a, ab, abd, abdu, abdul, K, Ka, Kal, Kala, Kalam]
print(searchParamWord('test'));
}
List<String> setSearchParam(String caseNumber) =>
caseNumber.split(' ').expand(searchParamWord).toList();
Iterable<String> searchParamWord(String word) sync* {
final sb = StringBuffer();
for (var i = 0; i < word.length; i++) {
yield (sb..writeCharCode(word.codeUnitAt(i))).toString();
}
}