मुझे उपरोक्त समस्या का एक कार्यशील समाधान मिल गया है, और मैं इसे यहां पोस्ट कर रहा हूं, अगर किसी और को भी इसी तरह की समस्या का अनुभव होता है।
समाधान केस स्टेटमेंट के बजाय उप-चयन का उपयोग करना है। यहाँ कोड का उपरोक्त डाइवेट है, ठीक किया गया है। (मुझे नहीं पता कि यह सबसे अच्छा या सबसे कुशल समाधान है, लेकिन इसने मेरे लिए समस्या को कुछ समय के लिए ठीक कर दिया है, और ऐसा लगता है कि खोज परिणाम यथोचित रूप से जल्दी वापस आ गए हैं।)
SELECT
exercises.ID AS ID,
exercises.title AS title,
(
(
SELECT COUNT(1)
FROM searchtags
LEFT JOIN exerciseSearchtags
ON exerciseSearchtags.searchtagID = searchtags.ID
WHERE searchtags.title LIKE CONCAT('%',?,'%')
AND exerciseSearchtags.exerciseID = exercises.ID
)+
(
SELECT COUNT(1)
FROM searchtags
LEFT JOIN exerciseSearchtags
ON exerciseSearchtags.searchtagID = searchtags.ID
WHERE searchtags.title LIKE CONCAT('%',?,'%')
AND exerciseSearchtags.exerciseID = exercises.ID
)+
...etc...
(
SELECT COUNT(1)
FROM searchtags
LEFT JOIN exerciseSearchtags
ON exerciseSearchtags.searchtagID = searchtags.ID
WHERE searchtags.title LIKE CONCAT('%',?,'%')
AND exerciseSearchtags.exerciseID = exercises.ID
)
) AS relevance
FROM
exercises
LEFT JOIN exerciseSearchtags
ON exerciseSearchtags.exerciseID = exercises.ID
LEFT JOIN searchtags
ON searchtags.ID = exerciseSearchtags.searchtagID
WHERE
searchtags.title LIKE CONCAT('%',?,'%') OR
searchtags.title LIKE CONCAT('%',?,'%') OR
...etc...
searchtags.title LIKE CONCAT('%',?,'%')
GROUP BY
exercises.ID
ORDER BY
relevance DESC