Насколько я знаю, предложение Where встречается первым, а Order By выполняется в результирующем наборе, поэтому для того, чтобы перечислить элементы по их «подобию», вам нужно будет выполнить некоторую проверку последовательности в расширенный формат запроса (не LINQ) или на C# изначально после того, как вы получите результат, переупорядочив его самостоятельно.
Все зависит от того, каково ваше определение подобия. По умолчанию восходящий или нисходящий - это то, как строка указана в словаре. Если вы хотите создать его в индексе, где происходит LIKE «% word%», вам все равно нужно указывать эти критерии в инструкции Order By отдельно.
Вы можете использовать подстроки и опустить их в случаях и порядке в этих случаях.
order by case
when SUBSTRING(field,1,Len(field)) LIKE 'word%' then 1
when SUBSTRING(field,2,Len(field)) LIKE 'word%' then 2
when SUBSTRING(field,3,Len(field)) LIKE 'word%' then 3
...
end
Смотрите здесь: Mysql: Order by like?
и здесь: Find all strings that share at least X characters, order by likeness
EDIT: Создать критерии могут быть полезны для создания этой работы в LINQ, но его проще использовать расширенный синтаксис ИМО. nhibernate CreateCriteria wildcard Like when
Попробуйте soundex func http://dev.mysql.com/doc/refman/5.7/ru/string-functions.html#function_soundex –