Effiziente Implementierung der Facettensuche in relationalen Datenbanken

Ich versuche eineFacettierte Suche oder Taggen mit Mehrfach-Tag-Filterung. In der facettierten Navigation werden nur nicht leere Kategorien angezeigt und die Anzahl der Elemente in der Kategorie, die auch bereits angewendeten Kriterien entsprechen, wird in Klammern angegeben.

Ich kann alle Artikel mit zugewiesenen Kategorien mit INNER JOINs erhalten undMit COUNT und GROUP BY erhalten Sie die Anzahl der Artikel in allen KategorienIch bin mir jedoch nicht sicher, wie es auf Millionen von Objekten und Tausende von Tags skaliert werden soll. Besonders das Zählen.

Ich weiß, dass es einige nicht relationale Lösungen gibtLucene + SOLR, aber ich habe auch einige RDBMS-basierte Closed-Source-Implementierungen gefunden, von denen behauptet wird, dass sie unternehmensstark sindFacetMap.com oderEndeca Daher muss es eine effiziente Möglichkeit geben, eine Facettensuche in relationalen Datenbanken durchzuführen.

Hat jemand Erfahrung in der Facettensuche und könnte ein paar Tipps geben?

Anzahl für jeden Kategoriesatz zwischenspeichern? Verwenden Sie möglicherweise eine intelligente inkrementelle Technik, mit der die Zähler aktualisiert werden?

Bearbeiten:

Ein Beispiel für eine facettierte Navigation finden Sie hier:Flamenco.

Derzeit habe ich das Standardschema mit 3 Tabellen (Elemente, Tags und items_tags wie hier beschrieben:http://www.pui.ch/phred/archives/2005/04/tags-database-schemas.html#toxi ) sowie eine Tabelle für Facetten. Jedem Tag wurde eine Facette zugewiesen.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage