MySQLの「UNIONALL」を使用して、1つのクエリでこれを達成できます。
PHPでトークンをループして、トークンごとにUNIONALLを作成します。
たとえば、トークンが「x」、「y」、「z」の場合、クエリは次のようになります
SELECT * FROM `entries`
WHERE token like "%x%" union all
SELECT * FROM `entries`
WHERE token like "%y%" union all
SELECT * FROM `entries`
WHERE token like "%z%" ORDER BY score ect...
order句は、結果セット全体を1つとして操作する必要があります。これは、必要なものです。
パフォーマンスの観点からはそれほど高速ではありませんが(私は推測しています)、データベースの場合、速度の観点からの主なオーバーヘッドは、多くの場合、PHPからデータベースエンジンにクエリを送信して結果を受信することです。この手法では、これはトークンごとに1回ではなく、1回だけ発生するため、パフォーマンスが向上します。それで十分かどうかはわかりません。