Ich versuche, eine Faceted search oder Markierung mit multiplen Tag-Filter zu implementieren. In der facettierten Navigation werden nur nicht leere Kategorien angezeigt und die Anzahl der Elemente in der Kategorie, die auch bereits angewendete Kriterien erfüllen, wird in Klammern dargestellt.Effiziente Implementierung der facettierten Suche in relationalen Datenbanken
I can get all items having assigned categories using INNER JOINs und get number of items in all category using COUNT and GROUP BY, aber ich bin mir nicht sicher, wie es auf Millionen von Objekten und Tausenden von Tags skalieren wird. Vor allem das Zählen.
Ich weiß, dass es einige nicht-relationalen Lösungen wie Lucene + SOLR, aber ich habe auch einige Closed-Source-RDBMS-basierte Implementierungen gefunden entreprise-Stärke wie FacetMap.com oder Endeca Software sollen sein, so muss es eine sein Effiziente Art, Facettensuche in relationalen Datenbanken durchzuführen.
Hat jemand Erfahrung in facettierter Suche und könnte ein paar Tipps geben?
Cache die Zählungen für jede Kategorie Set? Vielleicht eine intelligente inkrementelle Technik verwenden, die die Zähler aktualisiert?
Edit:
Ein Beispiel für facettierte Navigation finden Sie hier: Flamenco.
Derzeit habe ich das Standard-3-Tabellen-Schema (Elemente, Tags und Items_Tags wie hier beschrieben: http://www.pui.ch/phred/archives/2005/04/tags-database-schemas.html#toxi) plus eine Tabelle für Facetten. Jedem Tag wurde eine Facette zugewiesen.
Haben Sie Tabellen bereits eingerichtet? Können Sie die Struktur bereitstellen? –
Um zu verdeutlichen, ist Endeca kein Wrapper in einer relationalen Datenbank. Es speichert intern alle Informationen, die für die facettierte Suche und andere Operationen benötigt werden. –
Flamenco-Link funktioniert nicht mehr. Ist das das Neue? http://flamenco.berkeley.edu/ –