微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我试图通过多标签过滤实现一个 Faceted search标记.在分面导航中,仅显示不为空的类别,并且括号中也显示了与已经应用的条件匹配的类别中的项目数.

I can get all items having assigned categories using INNER JOINsget number of items in all category using COUNT and GROUP BY,但我不知道它将如何扩展到数百万个对象和数千个标签.特别是计数.

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

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

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

编辑:

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

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

解决方法

我只能确认尼尔斯说的话. RDBMS不利于多维搜索.我已经使用了一些智能解决方案,缓存计数器,使用触发器等.但最终,外部专用索引器总是胜利.

可能,如果您将数据转换为维度模型并将其提供给某些OLAP [我的意思是MDX引擎] – 它将表现良好.但似乎有点太沉重的解决方案,这绝对不是实时的.

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

原文地址:https://www.jb51.cc/mssql/82468.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐