2010-11-19 4 views
1

Si vous allez à newegg.com (juste un exemple), vous remarquerez que lorsque vous parcourez des produits, vous pouvez voir le nombre d'articles à côté de chaque attribut de produit dans le barre latérale gauche.Comment obtenir le nombre total de chaque attribut de produit/filtre comme newegg

Avec autant d'attributs sur certains éléments et tant de configurations différentes de filtres de produit, comment calculent-ils tous ces totaux si rapidement?

Répondre

2

Pour newegg.com, ils utilisent une technologie de navigation à facettes fournies par endeca

En bref, Endeca va effectivement utiliser les données fournies dans xml/csv ou récupérer directement les données de toute base de données (non limitée à mysql) et calculer la similarité et le groupe le résultat dans leur propre format

Endeca est pas libre, l'alternative open source tels que sphinx ou lucene solr

+0

Merci pour la réponse. Je me suis dit qu'ils n'interrogeaient pas directement la base de données. J'ai déjà utilisé le sphinx mais je n'arrive toujours pas à voir comment ils le font sans interroger endeca 100 (estimation arbitraire) fois pour chaque demande. Qu'est-ce que je rate? –

+0

Sphinx est rapide pour le texte intégral, en termes de recherche de facettes, est possible mais nécessite plus de configuration et de tests. Vous pouvez probablement traiter toute la facette est un groupe dans mysql, et sphinx le fait très rapidement. – ajreal

+0

Donc, si je vous comprends bien, ils exécutent un GROUP BY sur chaque ensemble d'attributs et utilisent une fonction de comptage agrégée pour obtenir le nombre de produits dans chaque attribut? –

0

Vous ne savez pas qu'ils calculent leur rapide. Vous savez seulement qu'ils les rendent rapidement. Ils peuvent passer des heures à calculer ces totaux et à restituer leurs pages, mettre en cache les résultats et servir ces fichiers statiques jusqu'au moment où ils veulent actualiser les données.

+0

Je l'achèterais (et ça pourrait très bien l'être) mais magento a la même fonctionnalité donc j'ai supposé que c'était quelque chose qui se passait en temps réel (ou au moins en temps réel au moment où la page était mise en cache). –

+0

Malheureusement, non, ils effectuent une requête en direct à endeca. Encore une fois, endeca n'est pas gratuit. – ajreal

+0

C'est à côté de ça. Newegg n'était qu'un exemple. Je souligne qu'acheter Endeca n'est pas la seule façon de rendre rapidement quelque chose de complexe - vous pouvez le calculer lentement et mettre en cache le résultat. –

1

Newegg utilise Endeca, et ils étaient probablement l'un des premiers clients d'Endeca. Rétrospectivement, Endeca aurait pu être un grand contributeur à leur succès. La navigation à facettes fonctionne très bien sur l'électronique complexe comme les pièces d'ordinateur.

Il y a quelques petites choses à prendre en compte dans la navigation à facettes:

1) Voulez-vous la navigation à facettes simplement sur les requêtes catégorie conduit, ou voulez-vous aussi de travailler sur la recherche? En fait, les catégories sont une sorte de facette hiérarchique.

2) Le modèle d'index inversé dé-normalisé de Solr vous cause-t-il des problèmes?

Si la réponse à 1) est vraie - c'est probablement le cas - vous aurez besoin d'indices inversés. Les index inversés sont à peu près le seul moyen de faire une recherche par mot clé. Ils feront aussi du facettage avec quelques mises en garde. Pour l'essentiel, vous pouvez considérer chaque facette comme un index inversé (en fait, la recherche par mot-clé peut être considérée comme une facette spéciale avec des fonctions de classement). Ensuite, pour effectuer les comptages, vous devez couper/et la requête en cours et les filtres avec toutes les autres valeurs de facette. Cependant, ce modèle peut entraîner des problèmes si vous devez représenter des ensembles de produits clairsemés (voir 2).

Si la réponse à 2) est vraie, il peut être utile de réfléchir davantage aux facettes en termes de OLAP. Je ne sais pas si les indices inversés peuvent gérer des relations complexes sans abstractions.

Il est juste de considérer et d'implémenter search/nav facetté comme un mélange de fulltext (généralement implémenté en tant qu'index inversé) et/ou OLAP.

Je suis assez sûr que vous pouvez retirer facettes avec un magasin de colonnes, mais vous auriez toujours besoin d'avoir un index inversé à votre disposition pour fusionner avec si vous voulez la recherche par mot-clé.

Grossman @ Dan:

Il peut sembler que oui, mais -

Pensiez-vous un instant combien de combinaisons il y a des facettes? Vous ne pouvez pas mettre en cache autant de pages comme ça. Il y a probablement plus de combinaisons sur Newegg.com que les étoiles dans votre ciel.

Ajouter dans la sélection multiple et c'est encore pire. Jeu terminé.

Vous ne pouvez mettre en cache que des cas non filtrés et généralement filtrés. Si vous essayez de spider Newegg.com sans limiter les niveaux de récursion, vous allez tuer l'araignée. Les sites à facettes provoquent des problèmes pour les moteurs de recherche en général pour cette raison. Voir http://www.searchmarketingstandard.com/facets-navigational-seo-powerhouse-part

+0

Excellent aperçu. Je vous remercie. –

Questions connexes