Если метрика просто, что все соответствия ключевого слова более "ценны", чем все соответствия содержания затем, можно просто использовать объединение с количествами строки. Что-то вдоль этих строк.
select *
from (
select row_number() over(order by blahblah) as row, t.*
from thetable t
where keyword match
union
select row_number() over(order by blahblah) + @@rowcount + 1 as row, t.*
from thetable t
where content match
)
order by row
Для чего-либо более сложного, чем это, где Вы хотите применить фактический вес до каждой строки, я не знаю, как помочь.
см. http://www.w3.org/TR/xpath#path-abbrev
// просто аббревиатура для потомка :: axis
Править
Цитата:
// para является сокращением от / Потомок-или-self :: node () / child :: para
То есть, это относится ко всем para, которые являются дочерними элементами контекстного узла или любой узел, происходящий от контекстного узла. Насколько я могу судить, это переводится в любой параграф-потомок контекстного узла.
Существует различие в группе контекста. //пункт [1]
сокращенно
/descendant-or-self:: node ()/child:: para [1]
, который возвращает каждый абзац, являющийся первым нижестоящим элементом родителя. /descendant:: para [1]
возвращает только первый абзац во всем поддереве.