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
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? –
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
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? –