如果输入是关键字,则在firebase上搜索功能过滤器

时间:2018-10-11 06:52:37

标签: firebase cordova ionic-framework search firebase-realtime-database

我想知道如何过滤更多此查询。 基本上,搜索功能适用于1行单词和连续行单词(包括空格),但是如果当前输入更可能是关键字

即。 “堆栈溢出”

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

  

即。 “搜索堆栈并溢出”

您能建议吗?谢谢

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;

}

1 个答案:

答案 0 :(得分:1)

我写了一个我能想到的最简单的搜索功能。它只是将搜索查询分为单个单词,然后在文本中搜索它们。您可以通过添加分数等来改善它。但是在这里,我们要涉及太多细节。 Google建议使用algolia(https://www.algolia.com/)进行全文搜索,如果在应用程序中包含徽标,则可以免费使用社区计划。

var key = "some words";

var text = "This is a text that has some words, that sometimes are in need of just being found by the algorithm";


var keySplit = key.split(" ");
var found = false;
keySplit.forEach(function(key){
  if(!found){
    found = text.indexOf(key) > -1;
  }
})

console.log(found)