SELECT `title`, `content` FROM `tTable`
WHERE `title` LIKE '%keyword%' AND `content` LIKE '%keyword%'
UNION
SELECT `title`, `content` FROM `tTable`
WHERE (`title` LIKE '%keyword%' OR `content` LIKE '%keyword%') AND NOT(`title` LIKE '%keyword%' AND `content` LIKE '%keyword%')
Поиск по бд, и сортировка рез-в
1 Как упорядочить результаты выборки относительно частоты упоминания ключевого слова?
2 Кк сделать так чтоб при такой сортировке наверху были записи у которых ключевое слово есть и в заголовке и в содержимом?
Спасибо зарание ..
И извините за навярняка уже задававшейся вопрос ..... найти не смог ... а дело горит......
Поиск осуществляяю так
`title` LIKE 'keyword' OR `content` LIKE 'keyword'
Цитата: merlex
Да забыл сказать ... база MySQL ......
Поиск осуществляяю так
`title` LIKE 'keyword' OR `content` LIKE 'keyword'
Поиск осуществляяю так
`title` LIKE 'keyword' OR `content` LIKE 'keyword'
Вообще-то результаты поиска появляются так: если условие выполняется, тогда берется данная строка с полем (полями), по которому(которым) был поиск... А частота - это как? Или есть совпадение, или нет. Или я что-то когда-то недочитал?:eek:
p.s. для php ищи в мануалах функцию usort
А по мне, создаёшь индексную таблицу и по ней шустрить...
Кк сделать так чтоб при такой сортировке наверху были записи у которых ключевое слово есть и в заголовке и в содержимом?
Код:
извращение конечно, но все же....
+ а, сортировку по частоте нахождения ключевых слов, конечно лучше делать на серверном языке.
Идет стандартная выборка с Лайком кейворда на титл и текст..
Потом просто проходим функцией usort...
Сама функция содржит preg_math_all ..... далее сравниваем массивы совпадений какой длиннее.
Как вариант скажем результирующим числом для сравнения может быть ... колво_упоминаний_в_содержимом + 2 * колво_упоминаний_в_заголовке