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.