Что-то вроде этого будет делать то, что вы хотите:
select
*
from
myTable
order by
sum
(
itemdate='2009-10-09',
title like '%keyword%',
text like '%keyword%',
criteria4,
criteria5
)
- Каждый критерий возвращает 0, если ложь, и 1, если истина.
- Вы суммируете каждый из них и упорядочиваете результат.
- Строки, которые имеют наиболее подходящий критерий, будут сверху.
Конечно, вы можете точно настроить все это, не просто набрав 0 или 1 для каждого критерия.