J'ai parcouru un réseau social, et j'ai trouvé une possibilité de recherche de personnes par: nom, tranche d'âge, ville, pays et sexe. La chose intéressante est que toutes ces informations peuvent être insérées dans une zone de texte séparés par l'espace. Ensuite, le moteur de recherche en quelque sorte l'analyse de manière très précise et retourne une liste de résultats. D'une part, cela semble assez simple: diviser la requête par espace et rechercher toutes les tables pertinentes pour l'occurrence. Jusqu'ici tout va bien. CependantRecherche intelligente avec une entrée
- Il y a des villes dont les noms sont plus de 2 mots et l'utilisateur peut les saisir différemment comme il est du texte libre.
- Il y a des noms qui sont plus de 2 mots
Question:
Comment peut-on diviser la requête de telle sorte, que nous savons certainement que partie doit rechercher où? c'est-à-dire nom dans la table des utilisateurs, ville dans le tableau des villes, le pays dans les pays etc.
Ce que je l'ai fait jusqu'à présent est:
- utilisateurs fill source de données avec tous les utilisateurs
- Vérifiez si le pays en provenance des pays tableexist dans la requête
- si elles existent puis filtrer la source de données que les utilisateurs de ce pays seulement
- Vérifiez si le tableau Villes existe dans la requête
- si disponible, puis filtrez la source de données pour avoir des utilisateurs de cette ville seulement
et ainsi de suite pour chaque table, alors que chaque fois que nous trouvons un match dans la table- on enlève la partie trouvé de la requête, nous laissant avec le paramètre le plus libre: le nom.
Cela semble fonctionner si l'utilisateur aurait su exactement comment les villes/pays etc. sont écrits dans mon db, mais la réalité est que l'utilisateur peut entrer dans une partie de la ville ou fausser la ville.
Je ne sais pas si je suis dans la bonne direction du tout avec ce que j'ai fait. Est juste un point de départ ...
PS: J'ai juste besoin d'un flux d'algorithme, donc le langage de programmation ne mesure pas vraiment. Toute idée ou orientation est plus que bienvenue.
Merci