2017-08-14 4 views
-2

Dans une application Android, je fais que j'ai mis en place une barre de recherche afin qu'un utilisateur puisse taper quelque chose dans l'espoir de le trouver dans la base de données. J'ai mis en place pour que le résultat apparaisse, mais seulement s'il est épelé parfaitement et complètement. Je voudrais faire en sorte qu'il puisse afficher des résultats lorsque l'utilisateur tape, et même s'il est orthographié incorrectement et juste similaire. J'ai lu sur les possibles options de requête intégrées avec la bibliothèque de base de données, mais ils ne semblent pas soutenir ce que je cherche. Y a-t-il un moyen de l'ajouter relativement simplement à mon projet? Je comprends que les recherches de texte prédictives ne sont pas simplement créées, mais y a-t-il une bibliothèque que je peux importer?Comment puis-je interroger la base de données firebase avec la recherche de texte

Répondre

1

bâtiment au large de la réponse de Martin, si vous voulez montrer, même si elles sont désactivées par un peu ce que je ferais est filtre.

databaseReference.orderByChild('_searchLastName') 
    .startAt(queryText) 
    .limitToFirst(10) //return 10 results 
    ... 

Je suppose que vous pouvez convertir à une liste de chaînes, cela vous donnera tous les résultats commençant par votre requête et les 9 qui est plus que ce que vous voulez.

d'ici, vous voulez filtrer en fonction contient soit ou startsWith

public List<String> filter(List<String> listToFilter, String query){ 
    List<String> results = new ArrayList(); 
    for(String string : listToFilter){ 
     if(string.startsWith(query){//or contains 
      results.add(string); 
     } 
    } 
    return results 
} 
1

Vous pouvez rechercher des chaînes en utilisant

databaseReference.orderByChild('_searchLastName') 
     .startAt(queryText) 
     .endAt(queryText+"\uf8ff") 
     .addValueEventListener ...