如果输入为关键字,则在firebase上搜索函数过滤器

如果输入为关键字,则在firebase上搜索函数过滤器,firebase,cordova,ionic-framework,search,firebase-realtime-database,Firebase,Cordova,Ionic Framework,Search,Firebase Realtime Database,我想知道如何过滤更多的查询。 基本上,搜索功能对于一行单词和连续的一行单词(包括空格)都可以正常工作,但是如果当前输入更像是关键字 即“堆栈溢出” 我的查询功能无法查询标题 即“在堆栈和溢出上搜索” 你能提出建议吗?谢谢 Searchdata(ev: any) { let val = ev.target.value; this.QuizDataa = this.mqprovider.getSearchData(val).filter((item) => { return (item

我想知道如何过滤更多的查询。 基本上,搜索功能对于一行单词和连续的一行单词(包括空格)都可以正常工作,但是如果当前输入更像是关键字

即“堆栈溢出”

我的查询功能无法查询标题

即“在堆栈和溢出上搜索”

你能提出建议吗?谢谢

Searchdata(ev: any) {

let val = ev.target.value;

this.QuizDataa = this.mqprovider.getSearchData(val).filter((item) => {
  return (item.Title.toLowerCase().indexOf(val.toLowerCase()) > -1);
  })
}


getSearchData(data) {

let qwe = [];
this.afd.database.ref().child("Data/")
  .orderByChild("Title")
  .startAt(data)
  .endAt(data + '\uf8ff')
  .on("child_added", function(snapshot) {

   qwe.push(snapshot.val());
});
return qwe;

}

我写了一个我能想象得到的最简单的搜索函数。它只是将搜索查询拆分为单个单词,然后在文本中搜索它们。你可以通过增加分数等来提高它,但这里我们讨论的细节太多了。谷歌建议使用algolia()进行全文搜索,如果你在应用程序中包含他们的徽标,那么社区计划是免费的

var key=“一些单词”;
var text=“这是一个包含一些单词的文本,有时需要通过算法找到这些单词”;
var keySplit=key.split(“”);
var=false;
keySplit.forEach(功能(键){
如果(!找到){
已找到=text.indexOf(key)>-1;
}
})

console.log(find)
hello@Lukasz,实际上我对与您相同的解决方案有着相同的想法,即拆分输入并将其存储在数组中,但是,我很难使用循环。相反,我使用forloop,并使用indexof(键[i].toLowerCase())将每个修剪过的字符串搜索到var文本