Skuteczna implementacja wyszukiwania fasetowego w relacyjnych bazach danych

Próbuję zaimplementowaćWyszukiwanie fasetowane lub tagowanie z filtrowaniem wielu tagów. W nawigacjach fasetowanych wyświetlane są tylko kategorie niepuste, a liczba elementów w kategorii, które również pasują do już zastosowanych kryteriów, jest przedstawiona w nawiasie.

Mogę uzyskać wszystkie przedmioty, którym przypisano kategorie, używając INNER JOIN iuzyskać liczbę przedmiotów we wszystkich kategoriach za pomocą COUNT i GROUP BY, jednak nie jestem pewien, jak skaluje się do milionów obiektów i tysięcy tagów. Zwłaszcza liczenie.

Wiem, że istnieją pewne rozwiązania, które nie są relacyjneLucene + SOLR, ale znalazłem także kilka implementacji opartych na RDBMS o zamkniętym kodzie źródłowym, o których mówi się, że są tak silneFacetMap.com lubEndeca oprogramowanie, więc musi istnieć skuteczny sposób przeprowadzania wyszukiwania fasetowego w relacyjnych bazach danych.

Czy ktoś ma doświadczenie w wyszukiwaniu fasetowym i może dać kilka wskazówek?

Buforuj liczniki dla każdego zestawu kategorii? Może wykorzystasz jakąś inteligentną technikę przyrostową, która zaktualizuje liczniki?

Edytować:

Przykład nawigacji fasetowej można znaleźć tutaj:Flamenco.

Obecnie mam standardowy schemat 3-tabelowy (elementy, znaczniki i znaczniki elementów, jak opisano tutaj:http://www.pui.ch/phred/archives/2005/04/tags-database-schemas.html#toxi ) plus tabela dla aspektów. Każdy tag ma przypisany aspekt.

questionAnswers(4)

yourAnswerToTheQuestion