Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Сортировка при поиске ...
 
 автор: jeans1986   (05.01.2011 в 14:08)   письмо автору
 
 

У меня таблица с статьями. Надо сделать поиск который будет искать поисковую фразу в статьях и сортировать результат по количеству вхождений. Как это можно осуществить без полнотекстового поиска? Полнотекстовый поиск не устраивает, потому что он ищет по словам а не вхождениям. Посоветуйте как можно это сделать. Заранее благодарю.

  Ответить  
 
 автор: lightning.say   (05.01.2011 в 16:28)   письмо автору
 
   для: jeans1986   (05.01.2011 в 14:08)
 

А структуру таблицы привели бы...

  Ответить  
 
 автор: jeans1986   (05.01.2011 в 16:56)   письмо автору
 
   для: lightning.say   (05.01.2011 в 16:28)
 

id INT, story TEXT
.
Мне надо смотреть в story количество вхождений поисковой фразы и отображать по колиечству вхождений этой фразы в поле story.
Т.е если есть таблица:

1 - aaa bbb ccc
2 - aaa aba cac
3- ddd aff eee 


Фраза для поиска: a

Результат должен быть:

2 - aaa aba cac
1 - aaa bbb ccc
3- ddd aff eee 

  Ответить  
 
 автор: neadekvat   (05.01.2011 в 17:46)   письмо автору
 
   для: jeans1986   (05.01.2011 в 14:08)
 

Вам надо найти количество вхождений подстроки в строку и отсортировать по нему:
SELECTE substr_count('aaa aba cac', 'a') as count
...
ORDER BY count DESC

Одна лишь проблема. Маленькая. Функции substr_count и ее аналогов в mysql нет.
Быстрый гуглопоиск выдал это. Но мне кажется, это вам будет дорогого стоить в плане нагрузки.

  Ответить  
 
 автор: Trianon   (05.01.2011 в 17:55)   письмо автору
 
   для: neadekvat   (05.01.2011 в 17:46)
 

>Вам надо найти количество вхождений подстроки в строку и отсортировать по нему:
>SELECTE substr_count('aaa aba cac', 'a') as count
Э..?

>Одна лишь проблема. Маленькая. Функции substr_count и ее аналогов в mysql нет.
Хороша маленькая :)))

  Ответить  
 
 автор: lightning.say   (05.01.2011 в 18:26)   письмо автору
 
   для: neadekvat   (05.01.2011 в 17:46)
 

а нельзя перегнать данные в массив, элементами которого будут значения из таблицы и работать с ним уже при помощи функции substr_count?

  Ответить  
 
 автор: neadekvat   (05.01.2011 в 18:47)   письмо автору
 
   для: lightning.say   (05.01.2011 в 18:26)
 

А если статей 100 000? При каждом поисковом запросе вытаскивать все 100 000 записей в оперативную память, вычислять количество вхождение, сортировать, выдавать..
А если там еще постраничная навигация?

  Ответить  
 
 автор: lightning.say   (05.01.2011 в 18:49)   письмо автору
 
   для: neadekvat   (05.01.2011 в 18:47)
 

логично

  Ответить  
 
 автор: Trianon   (05.01.2011 в 19:09)   письмо автору
 
   для: neadekvat   (05.01.2011 в 17:46)
 

кстати, метод по ссылке в некоторых случаях не такой уж позорный.
Например, когда подстрока присутствует лишь в небольшом количестве строк таблицы.

  Ответить  
 
 автор: neadekvat   (05.01.2011 в 19:25)   письмо автору
 
   для: Trianon   (05.01.2011 в 19:09)
 

Ни в коем случаи я не считал его позорным :) Не дорос еще.
Однако мне кажется такое в принципе не применимо на большом количестве текстов (именно текстов (text, blob..); возможно, по строкам потянет нормально).

  Ответить  
 
 автор: Trianon   (05.01.2011 в 20:07)   письмо автору
 
   для: neadekvat   (05.01.2011 в 19:25)
 

зависит от частоты такого рода запросов к базе...
Если запрос раз в сутки - почему бы и нет?

  Ответить  
 
 автор: neadekvat   (05.01.2011 в 20:22)   письмо автору
 
   для: Trianon   (05.01.2011 в 20:07)
 

Но, судя по первому посту, это пользовательский поиск. А он используется много чаще, чем раз в сутки.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования