如何订购标签过滤搜索结果

时间:2013-05-16 04:49:12

标签: mysql search-engine

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

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指的是product_table的id

  • tagged_table.tid指的是tag_table的id

如果我想在找到任何匹配项时返回结果,如何构建最快的sql查询,并按大部分匹配的数量对结果进行排序?

1 个答案:

答案 0 :(得分:0)

感谢zerkms我将我的单个表改为'多关系'表(参考问题) 并使用简单的查询来解决我的问题。

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