sql – 在关系数据库中有效地执行分面搜索

前端之家收集整理的这篇文章主要介绍了sql – 在关系数据库中有效地执行分面搜索前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图通过多标签过滤实现一个 Faceted search标记.在分面导航中,仅显示不为空的类别,并且括号中也显示了与已经应用的条件匹配的类别中的项目数. @H_502_2@I can get all items having assigned categories using INNER JOINsget number of items in all category using COUNT and GROUP BY,但我不知道它将如何扩展到数百万个对象和数千个标签.特别是计数.

@H_502_2@我知道有一些不是关系的解决方案,如Lucene + SOLR,但是我发现还有一些基于封闭源的基于RDBMS的实现被认为是像FacetMap.comEndeca这样的企业,所以必须有一个有效的方式来执行在关系数据库中进行多面搜索.

@H_502_2@有没有人有分面搜索的经验,可以提供一些提示

@H_502_2@缓存每个类别集的计数?也许使用一些智能增量技术来更新计数器?

@H_502_2@编辑:

@H_502_2@可以在这里找到方面导航的一个例子:Flamenco.

@H_502_2@目前,我有标准的3表格方案(项目,标签和items_tags,如这里所述:http://www.pui.ch/phred/archives/2005/04/tags-database-schemas.html#toxi)加上一个表面.每个标签都分配了一个方面.

解决方法

我只能确认尼尔斯说的话. RDBMS不利于多维搜索.我已经使用了一些智能解决方案,缓存计数器,使用触发器等.但最终,外部专用索引器总是胜利. @H_502_2@可能,如果您将数据转换为维度模型并将其提供给某些OLAP [我的意思是MDX引擎] – 它将表现良好.但似乎有点太沉重的解决方案,这绝对不是实时的.

@H_502_2@相反,使用专用索引引擎(认为Lucene,认为Sphinx)的解决方案可以靠近实时增加索引更新.

原文链接:https://www.f2er.com/mssql/82468.html

猜你在找的MsSQL相关文章