Я пытаюсь написать запрос, который выводит (ограничивает) первые 10 записей с наибольшим количеством совпадений по ключевым словам.Мой SQL-запрос выглядит следующим образом:
SELECT *
FROM wine
WHERE
description LIKE '%dry%'
OR description LIKE '%depth%'
OR description LIKE '%strong%'
OR description LIKE '%spicy%'
ORDER BY
IF(description LIKE '%dry%',1,0)+
IF(description LIKE '%depth%',1,0)+
IF(description LIKE '%strong%',1,0)+
IF(description LIKE '%spicy%',1,0)
DESC LIMIT 10;
Этот запрос работает, находя 10 лучших записей, в которых описания соответствуют ключевым словам (сухой, глубокий, сильный, пряный), а затем упорядочивает их по числу вхожденийэти слова.
Я пытаюсь написать эквивалент запроса JPA, но я относительно новичок в этом.Будет ли использование параметра @Query
в WineRepository
лучшим вариантом здесь, или эта логика должна быть жестко закодирована с Java в моем файле WineService
?