加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

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

发布时间:2020-12-12 16:09:07 所属栏目:MsSql教程 来源:网络整理
导读:我试图通过多标签过滤实现一个 Faceted search或标记.在分面导航中,仅显示不为空的类别,并且括号中也显示了与已经应用的条件匹配的类别中的项目数. I can get all items having assigned categories using INNER JOINs和get number of items in all category
我试图通过多标签过滤实现一个 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)加上一个表面.每个标签都分配了一个方面.

解决方法

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

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读