使用MySQL的分面搜索

使用MySQL的分面搜索,mysql,Mysql,我目前正在尝试构建一个MySQL version 8查询,以获取具有文章计数的过滤器列表。我知道我可以使用Elasticsearch来实现期望的结果,但要求是使用MySQL 数据 查询 选择sf.name、sff.title、sff.key、COUNTDISTINCT sfa.id作为文章计数 来自车间的过滤器为sf 内部连接车间\u过滤器\u面作为sff上的sff。过滤器\u id=sf.id 左键将shop_facetables作为sfa打开 sfa.facet\u id=中的sff.id和

我目前正在尝试构建一个MySQL version 8查询,以获取具有文章计数的过滤器列表。我知道我可以使用Elasticsearch来实现期望的结果,但要求是使用MySQL

数据 查询 选择sf.name、sff.title、sff.key、COUNTDISTINCT sfa.id作为文章计数 来自车间的过滤器为sf 内部连接车间\u过滤器\u面作为sff上的sff。过滤器\u id=sf.id 左键将shop_facetables作为sfa打开 sfa.facet\u id=中的sff.id和sfa.facetable\u id 选择sfa.facetable\u id 从车间过滤面到sff 在sfa.facet\u id=sff.id上作为sfa的内部连接车间\u facetables 内部连接车间过滤器作为sf.id上的sf=sff.filter\U id 按sfa.facetable\u id分组 有 sf.name='filter_1'和MAXsff.key=1252884110=1 或MAXsff.key=1741157870=1 按sf.name、sff.title、sff.key分组 输出 如您所见,其他筛选器_1项的计数为0。它们应显示大于零的计数。我在上面的问题中遗漏了什么

预期产量 分面搜索应如何运行的示例:


您只需要将HAVING子句中的AND更改为OR:

结果是:

| name     | title     | key        | articles_count |
| -------- | --------- | ---------- | -------------- |
| filter_1 | Facet 1-A | 1741157870 | 5              |
| filter_1 | Facet 1-B | 9401707597 | 4              |
| filter_1 | Facet 1-C | 8395537669 | 27             |
| filter_1 | Facet 1-D | 1252884110 | 18             |
| filter_1 | Facet 1-E | 885500301  | 1              |
| filter_2 | Facet 2-A | 5454540233 | 4              |
| filter_2 | Facet 2-B | 2418516648 | 3              |
| filter_2 | Facet 2-C | 2808696733 | 4              |
| filter_2 | Facet 2-D | 8692535611 | 5              |
| filter_2 | Facet 2-E | 6389292333 | 0              |
| filter_2 | Facet 2-F | 5107586138 | 4              |
| filter_2 | Facet 2-G | 9464620325 | 3              |
| filter_2 | Facet 2-H | 1166556565 | 0              |
| filter_2 | Facet 2-I | 2739765054 | 0              |
| filter_3 | Facet 3-A | 1112385648 | 23             |
| filter_4 | Facet 4-A | 2883255908 | 2              |
| filter_4 | Facet 4-B | 1507996583 | 3              |
| filter_4 | Facet 4-C | 7632658109 | 3              |
| filter_4 | Facet 4-D | 2990697496 | 2              |
| filter_5 | Facet 5-A | 2051629771 | 16             |
| filter_5 | Facet 5-B | 6620949318 | 6              |
| filter_5 | Facet 5-C | 8962757449 | 2              |
| filter_5 | Facet 5-D | 2020077129 | 2              |

@在文章的开头阴影检查DB小提琴。或者你是说别的什么?抱歉,一定错过了!就这样。。非常感谢你!
| name     | title     | key        | articles_count |
| -------- | --------- | ---------- | -------------- |
| filter_1 | Facet 1-A | 1741157870 | 5              |
| filter_1 | Facet 1-B | 9401707597 | 4              |
| filter_1 | Facet 1-C | 8395537669 | 27             |
| filter_1 | Facet 1-D | 1252884110 | 18             |
| filter_1 | Facet 1-E | 885500301  | 1              |
| filter_2 | Facet 2-A | 5454540233 | 4              |
| filter_2 | Facet 2-B | 2418516648 | 3              |
| filter_2 | Facet 2-C | 2808696733 | 4              |
| filter_2 | Facet 2-D | 8692535611 | 5              |
| filter_2 | Facet 2-E | 6389292333 | 0              |
| filter_2 | Facet 2-F | 5107586138 | 4              |
| filter_2 | Facet 2-G | 9464620325 | 3              |
| filter_2 | Facet 2-H | 1166556565 | 0              |
| filter_2 | Facet 2-I | 2739765054 | 0              |
| filter_3 | Facet 3-A | 1112385648 | 23             |
| filter_4 | Facet 4-A | 2883255908 | 2              |
| filter_4 | Facet 4-B | 1507996583 | 3              |
| filter_4 | Facet 4-C | 7632658109 | 3              |
| filter_4 | Facet 4-D | 2990697496 | 2              |
| filter_5 | Facet 5-A | 2051629771 | 16             |
| filter_5 | Facet 5-B | 6620949318 | 6              |
| filter_5 | Facet 5-C | 8962757449 | 2              |
| filter_5 | Facet 5-D | 2020077129 | 2              |