我试图通过多标签过滤实现一个
Faceted search或标记.在分面导航中,仅显示不为空的类别,并且括号中也显示了与已经应用的条件匹配的类别中的项目数.
I can get all items having assigned categories using INNER JOINs和get number of items in all category using COUNT and GROUP BY,但我不知道它将如何扩展到数百万个对象和数千个标签.特别是计数.
我知道有一些不是关系的解决方案,如Lucene + SOLR,但是我发现还有一些基于封闭源的基于RDBMS的实现被认为是像FacetMap.com或Endeca这样的企业,所以必须有一个有效的方式来执行在关系数据库中进行多面搜索.
缓存每个类别集的计数?也许使用一些智能增量技术来更新计数器?
编辑:
可以在这里找到方面导航的一个例子:Flamenco.
目前,我有标准的3表格方案(项目,标签和items_tags,如这里所述:http://www.pui.ch/phred/archives/2005/04/tags-database-schemas.html#toxi)加上一个表面.每个标签都分配了一个方面.