Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Поиск по бд, и сортировка рез-в

6.0K
12 августа 2007 года
merlex
78 / / 25.02.2006
.... осуществляю поиск по БД, по нескольким полям ... скажем заголовок и содержимое статьи.

1 Как упорядочить результаты выборки относительно частоты упоминания ключевого слова?

2 Кк сделать так чтоб при такой сортировке наверху были записи у которых ключевое слово есть и в заголовке и в содержимом?


Спасибо зарание ..
И извините за навярняка уже задававшейся вопрос ..... найти не смог ... а дело горит......
6.0K
12 августа 2007 года
merlex
78 / / 25.02.2006
Да забыл сказать ... база MySQL ......

Поиск осуществляяю так

`title` LIKE 'keyword' OR `content` LIKE 'keyword'
251
12 августа 2007 года
SkyMаn
1.7K / / 31.07.2007
Цитата: merlex
Да забыл сказать ... база MySQL ......

Поиск осуществляяю так

`title` LIKE 'keyword' OR `content` LIKE 'keyword'


Вообще-то результаты поиска появляются так: если условие выполняется, тогда берется данная строка с полем (полями), по которому(которым) был поиск... А частота - это как? Или есть совпадение, или нет. Или я что-то когда-то недочитал?:eek:

337
12 августа 2007 года
shine
719 / / 09.06.2006
Я бы сделал такую сортировку не в SQL запросе а на серверном языке(php, с#, ...): создаеш sql вообще без GROUP BY, результат его работы преобразуешь в массив и с помощью своей собственной функции сортировки упорядочиваешь его как хочется.

p.s. для php ищи в мануалах функцию usort
15
12 августа 2007 года
shaelf
2.7K / / 04.05.2005
А по мне, создаёшь индексную таблицу и по ней шустрить...
7.8K
15 августа 2007 года
Tingo
201 / / 17.05.2007
Вот пример выборки, описанной в задаче №2:
Кк сделать так чтоб при такой сортировке наверху были записи у которых ключевое слово есть и в заголовке и в содержимом?
 
Код:
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%')
7.8K
15 августа 2007 года
Tingo
201 / / 17.05.2007
мда... пересмотрел код...
извращение конечно, но все же....

+ а, сортировку по частоте нахождения ключевых слов, конечно лучше делать на серверном языке.
6.0K
16 августа 2007 года
merlex
78 / / 25.02.2006
спасибо всем .. задачу решил следующим способом ....

Идет стандартная выборка с Лайком кейворда на титл и текст..

Потом просто проходим функцией usort...

Сама функция содржит preg_math_all ..... далее сравниваем массивы совпадений какой длиннее.
Как вариант скажем результирующим числом для сравнения может быть ... колво_упоминаний_в_содержимом + 2 * колво_упоминаний_в_заголовке
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог