2017-01-08 1 views
-1

Nous utilisons SphinxSearch (pas vraiment pertinent vu que nous retournons les objets résultants de MySQL) pour retourner les résultats de recherche de l'utilisateur. Cette partie fonctionne bien. Nous affichons 30 éléments par page, mais il se peut que 20 000 résultats correspondent.Attributs communs des résultats de recherche

Ce que nous essayons de faire est d'ajouter la possibilité de filtrer les résultats de recherche en fonction des attributs et des options des résultats de recherche. Prenez cette recherche amazon, par exemple:

https://www.amazon.ca/s/ref=nb_sb_noss_2?url=search-alias%3Daps&field-keywords=tablet

Si vous regardez sur le côté gauche, vous pouvez filtrer par marque, catégorie, mots-clés, le pourcentage de réduction, capacité de mémoire, la taille de l'écran, et al. Évidemment, cela ne s'applique pas seulement aux résultats de recherche actuellement affichés, mais à l'ensemble complet des résultats (qui, dans cette Amazonie, atteint 400 pages).

Si nous devions faire cela, comment pouvons-nous éviter de charger et boucler tous les résultats 400 * 30 pour afficher les filtres d'attributs/catégories pertinents? Nous avons essayé de faire une boucle juste pour voir combien de temps cela prendrait, et c'est facilement au-dessus de 15 secondes. Nous avons également essayé de mettre en cache des termes de recherche courants (tels que la tablette dans ce cas) mais, évidemment, la plupart des recherches effectuées par les utilisateurs ne tomberont pas dans des ensembles de résultats faciles à mettre en cache.

De plus, y a-t-il un nom pour ce type de filtrage de jeu de résultats?

+0

lol pourquoi le downvote et de voter à proximité? Juste curieux. – StackOverflowed

+0

Dans le sens le plus strict, ce n'est pas vraiment une question qui peut être vérifiée par un «bloc de code». C'est un grand sujet, et la résolution actully implique bien un peu de va-et-vient, ce qui n'est pas configuré pour. Ma réponse ne répond pas vraiment à votre question, elle n'est pas autonome, elle vous fournit simplement une référence. Pour répondre pleinement (en termes de SO) votre question nécessiterait un très long tutoriel, ce qui n'est pas idéal (votre question ne fournit pas suffisamment de détails). – barryhunter

+0

@barryhunter Parfois nous ne savons même pas comment ça s'appelle. Votre réponse, simplement en fournissant le terme «recherche à facettes» me donne assez pour passer. – StackOverflowed

Répondre