Si entiendo correctamente, desea ordenar los resultados por número de coincidencias en orden descendente. Para hacerlo, puede intentar:
SELECT movie
FROM genre_rel
WHERE genre IN (1, 8, 3)
GROUP BY movie
order by count(movie) desc
Y si desea películas que cumplan con todos los criterios, puede usar:
SELECT movie
FROM genre_rel
WHERE genre IN (1, 8, 3)
GROUP BY movie
HAVING count(movie) = 3
ACTUALIZAR:
Esto es lo mejor que puedo hacer en MySql. No puede usar IN porque no puede extraer información sobre el orden de los filtros. Si agrega una tabla derivada como medio de filtrado, puede agregar esta información y usarla para mostrar resultados por coincidencias posicionales. Tenga en cuenta que no proporciona ninguna información de pedido en la tabla gender_rel, por lo que realmente no sabe la importancia de los géneros por película. Esta consulta le dará películas coincidentes por orden descendente de importancia de los géneros en los criterios:
SELECT movie
FROM genre_rel
INNER join
(
select 1 genre, 1000 weight
union all
select 8, 100
union all
select 3, 10
) weights
on genre_rel.genre = weights.genre
GROUP BY movie
order by sum(weight) desc
Tenga en cuenta que todas las películas excepto 5 pertenecen a los 3 géneros. Si agrega una columna a gender_rel que representa el orden de importancia, puede idear algunas matemáticas (peso - importancia o algo similar).