【问题标题】:Search function filter on firebase if the input are keywords如果输入是关键字,则在 Firebase 上搜索功能过滤器
【发布时间】:2019-03-16 04:14:56
【问题描述】:

我想知道如何过滤更多此查询。 基本上,搜索功能适用于 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;

}

【问题讨论】:

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


    【解决方案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)

    【讨论】:

    • 你好@Lukasz,我实际上对与您的解决方案相同的想法将输入拆分并存储在数组中但是,我很难使用循环。相反,我使用了 forloop,并使用 indexof(key[i].toLowerCase()) 将每个修剪后的字符串搜索到 var text
    猜你喜欢
    • 1970-01-01
    • 2020-08-17
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 2012-05-05
    • 2019-12-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多