Estoy tratando de implementar un Faceted search o etiquetar con filtrado de etiquetas múltiples. En la navegación con facetas, solo se muestran categorías no 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.Implementación eficiente de búsqueda facetada en bases de datos relacionales
I can get all items having assigned categories using INNER JOINs y get number of items in all category using COUNT and GROUP BY, sin embargo, no estoy seguro de cómo se escalará a millones de objetos y miles de etiquetas. Especialmente el conteo.
sé que hay algunas soluciones no-relacionales como Lucene + SOLR, pero he encontrado también algunas implementaciones basadas en RDBMS de código cerrado que se dice que son entreprise-fuerza como el software FacetMap.com o Endeca, por lo que debe ser una forma eficiente de realizar búsquedas facetadas en bases de datos relacionales.
¿Alguien tiene experiencia en búsqueda facetada y podría dar algunos consejos?
¿Caché los recuentos para cada conjunto de categorías? ¿Tal vez usar alguna técnica incremental inteligente que actualice los contadores?
Editar:
Un ejemplo de navegación por facetas se puede encontrar aquí: Flamenco.
Actualmente tengo el esquema estándar de 3 tablas (elementos, etiquetas y etiquetas de elementos como se describe aquí: http://www.pui.ch/phred/archives/2005/04/tags-database-schemas.html#toxi) más una tabla para las facetas. Cada etiqueta tiene asignada una faceta.
¿Se han establecido ya las tablas? ¿Puedes proporcionar la estructura? –
Para aclarar, Endeca no es un contenedor en una base de datos relacional. Almacena toda la información necesaria para la búsqueda con facetas y otras operaciones internamente. –
El enlace flamenco ya no funciona. ¿Es este el nuevo? http://flamenco.berkeley.edu/ –