Implementación eficiente de búsqueda facetada en bases de datos relacionales.

Estoy tratando de implementar unFacetas de búsqueda o etiquetado con filtrado de etiquetas múltiples. En la navegación por facetas, solo se muestran las categorías que no están vacías y el número de elementos en la categoría que también coinciden con los criterios ya aplicados se presenta entre paréntesis.

Puedo obtener todos los artículos que tengan categorías asignadas usando INNER JOINs yobtenga el número de artículos en todas las categorías usando COUNT y GROUP BYSin embargo, no estoy seguro de cómo escalará a millones de objetos y miles de etiquetas. Especialmente el conteo.

Sé que hay algunas soluciones no relacionales comoLucene + SOLR, pero también he encontrado algunas implementaciones basadas en RDBMS de código cerrado que se dice que tienen la fuerza empresarial comoFacetMap.com oEndeca software, por lo que debe haber una forma eficiente de realizar búsquedas facetadas en bases de datos relacionales.

¿Alguien tiene experiencia en la búsqueda facetada y podría dar algunos consejos?

¿Almacenar en caché los recuentos para cada conjunto de categorías? ¿Tal vez utilizar alguna técnica inteligente inteligente que actualice los contadores?

Editar:

Un ejemplo de navegación facetada se puede encontrar aquí:Flamenco.

Actualmente tengo el esquema estándar de 3 tablas (artículos, etiquetas y artículos_tags como se describe aquí:http://www.pui.ch/phred/archives/2005/04/tags-database-schemas.html#toxi ) más una mesa para facetas. Cada etiqueta tiene asignada una faceta.

Respuestas a la pregunta(4)

Su respuesta a la pregunta