PostgreSQL - orden por una matriz
Tengo 2 tablas: curso que contiene id y nombre de los cursos y tagCourse que contiene etiquetas para cada curso.
course tagcourse
------------ ----------------
PK id_course PK tag
name PK, FK id_course
Me gustaría escribir una función que busque cursos según un conjunto dado de etiquetas y las devuelva ordenadas por cantidad de etiquetas coincidentes. Sin embargo no sé cómo escribirlo correctamente y de manera eficiente. Por favor, ayúdame.
es decir.
CREATE OR REPLACE FUNCTION searchByTags(tags varchar[])
RETURNS SETOF.....
RETURN QUERY SELECT * FROM course c INNER JOIN tagcourse tc ON c.id_course = tc.id_course
WHERE ??? ORDER BY ???
END....