Sto tentando di implementare uno Faceted search o tagging con filtro a tag multipli. Nella navigazione a faccette vengono visualizzate solo le categorie non vuote e il numero di elementi nella categoria che corrispondono anche ai criteri già applicati viene presentato tra parentesi.Implementazione efficiente della ricerca a faccette nei database relazionali
I can get all items having assigned categories using INNER JOINs e get number of items in all category using COUNT and GROUP BY, tuttavia non sono sicuro di come verrà ridimensionato a milioni di oggetti e migliaia di tag. Soprattutto il conteggio.
So che ci sono alcune soluzioni non-relazionali come Lucene + SOLR, ma ho trovato anche alcune implementazioni RDBMS basati closed-source che si dice di essere entreprise resistenza come il software FacetMap.com o Endeca, quindi ci deve essere un modo efficiente per eseguire ricerche sfaccettate in database relazionali.
Qualcuno ha esperienza nella ricerca a faccette e potrebbe dare qualche consiglio?
Memorizzare i conteggi per ciascun gruppo di categorie? Forse usare qualche tecnica incrementale intelligente che aggiornerà i contatori?
Edit:
Un esempio di navigazione a faccette può essere trovato qui: Flamenco.
Attualmente ho lo schema standard a 3 tabelle (articoli, tag e items_tags come descritto qui: http://www.pui.ch/phred/archives/2005/04/tags-database-schemas.html#toxi) più una tabella per le faccette. Ogni tag ha assegnato un aspetto.
Ti hanno tavoli sono allestiti già? Puoi fornire la struttura? –
Per chiarire, Endeca non è un wrapper su un database relazionale. Memorizza internamente tutte le informazioni necessarie per la ricerca sfaccettata e altre operazioni. –
Il collegamento Flamenco non funziona più. È questo il nuovo? http://flamenco.berkeley.edu/ –