Mysql 如何订购标签筛选搜索结果

Mysql 如何订购标签筛选搜索结果,mysql,search-engine,Mysql,Search Engine,我正在建立一个支持标签过滤器的搜索引擎。下面是我的数据库结构,它是多对多表 product_table id name 1 p1 2 p2 3 p3 tagged_table id pid tid 1 1 1 2 1 2 3 1 3 4 1 4 5 1 5 6 2 1 7 2 2 8 3 1 9 3 2 10 3 4 ta

我正在建立一个支持标签过滤器的搜索引擎。下面是我的数据库结构,它是多对多表

product_table
id   name
1     p1
2     p2
3     p3

tagged_table
id  pid   tid
1    1     1
2    1     2
3    1     3
4    1     4
5    1     5
6    2     1
7    2     2
8    3     1
9    3     2
10   3     4

tag_table
id tag_name
1    t1
2    t2
3    t3
4    t4
5    t5
  • tagged_table.pid是指产品_table的id

  • tagged_table.tid是指tag_table的id


如果我希望在找到任何匹配项时返回结果,如何构建最快的sql查询,并按匹配的最大大小写数对结果排序?

多亏了zerkms,我将我的单表更改为“多个关系”表(请参阅问题) 并用一个简单的查询来解决我的问题

SELECT COUNT(pid) AS matches FROM tagged_table WHERE tid IN (1,2,3,4) ORDER BY matches DESC

“最快”是一个奇怪的要求,当你没有任何。试着自己解决你的问题,然后带着更具体的东西回来,比如一个工作更新的查询,我担心它的性能,因为它经历了很多查询!谷歌的多对多标准化()是的,如果只有一个人愿意接受教育,那么目前的设计是非常糟糕的。在这里,OP经常会问一些问题,并希望所有的工作都能为他完成,这样他就可以复制粘贴到他们的项目中。在这种情况下,我的行为被视为“粗鲁”和“无益”
匹配项应该用反勾号括起来,而不是用引号括起来(如果你想把它括起来,或者干脆省略anithyng)