Вывод результатов поиска по количеству совпадений

funkster

Новичок
Вывод результатов поиска по количеству совпадений

Здравствуйте,
есть система поиска типа select from table where name LIKE str1 or name Like str2.
Где str - отдельное слово в строке поиска. Как можно вывести результаты по убыванию совпадений ?
Так чтобы первыми были строки, где есть 2 слова из двух, дальше шли строки с первым из двух, а потом со вторым из двух.

Возможно ли это ?
 

phprus

Moderator
Команда форума
funkster
Почитай про полнотекстовый (fulltext) поиск в mysql.
 

funkster

Новичок
не подходит ... у меня поиск по части слова.
То есть слово дорога приводится к дорог*.
 

Alexandre

PHPПенсионер
Возможно ли это ?
для Like - нет
принципиально - возможно

ищи на phpInside #7 (Материалы III-Конференции ) Статья Рыбака про контекстный поиск (поиск с морфологией)
ищи Материалы последней Конференции про написание процедур
Процедуры в mySQL: примеры практического применения. (Александр Войцеховский ).
 

funkster

Новичок
"для Like - нет" ... как-то не порадовало =(
Буду искать указанные источники.
 

valyala

Новичок
Здравствуйте,
есть система поиска типа select from table where name LIKE str1 or name Like str2.
Где str - отдельное слово в строке поиска. Как можно вывести результаты по убыванию совпадений ?
Так чтобы первыми были строки, где есть 2 слова из двух, дальше шли строки с первым из двух, а потом со вторым из двух.
Да, это возможно. Например,

[sql]select 2*(name like str1) + (name like str2) as cnt, name from table where name LIKE str1 or name Like str2 order by cnt desc[/sql]
 

funkster

Новичок
А потом постраничный вывод с LIMIT уже грозит проблемками. То есть надо следить откуда выбирать данные.
 
Сверху