Фильтр функции поиска в Firebase, если входные данные являются ключевыми словами - PullRequest
0 голосов
/ 11 октября 2018

Мне интересно, как я могу отфильтровать больше этого запроса.В основном, функция поиска отлично работает для 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 голосов
/ 11 октября 2018

Я написал простейшую функцию поиска, которую только мог себе представить.Он просто разбивает поисковый запрос на отдельные слова и ищет их в тексте.Вы можете улучшить его, добавив баллы и т. Д. Но здесь мы вдаваемся в подробности.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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...