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

Форум MySQL

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

 

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

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

тема: Поиск и символы
 
 автор: darkgod   (15.01.2009 в 10:18)   письмо автору
 
 

Ребят, всем привет!!!

Помогите мне пожалуйста сделать поиск!
Нужно очень срочно а я ненаю как (((

Вот что нужно:

Есть поле для поиска, мне надо чтобы при вводе слова для поиска искалось именно это слово, если в конце добавлен символ * то происходила замена любой комбинации символов, например на слова газ найдет: газета, газированный, газ. Если в конце добавлен символ ? то происходилоа замена только одного символа, например: баннер - баннера, баннеры, но не баннер и не баннерный!!!

Нужно чтоб этот поиск работал по базе mysql всего с одним текстовым полем!!!

  Ответить  
 
 автор: xx77   (15.01.2009 в 12:00)   письмо автору
5.5 Кб
 
   для: darkgod   (15.01.2009 в 10:18)
 

полнотекстовой поиск в логическом режиме вам поможет :)
прикрепил слегка урезанную версию того что нашёл . урезал две картинки с какими-то не интересными двумя схемами соединения серверов .

могу дать ссылку на исходный ppt-файл в почти два Mb

  Ответить  
 
 автор: darkgod   (15.01.2009 в 12:59)   письмо автору
 
   для: xx77   (15.01.2009 в 12:00)
 

((( не разобрался

  Ответить  
 
 автор: xx77   (15.01.2009 в 14:26)   письмо автору
 
   для: darkgod   (15.01.2009 в 12:59)
 

Простой запрос нужен,
И немного придумать как фильтровать слова , как залезть и отредактировать my.cnf для mysql, чтобы три буквы хватало для поиска (вместо четырёх минимум по умолчанию).
Создать FULLTEXT индекс на нужных колонках,
придумать как лучше выдавать результаты строгими порциями,
подумав делать-ли подсчёт того сколько всего результатов.
Написать из всего этого скрипт, и сделать форму.
потом потестить всё это дело , и всё переделать сначала , если не понравится :)
Желательно всё это делать не закрывая мануалы для php и mysql.
Кроме вас никому не известно что-то больше того, что у вас есть таблица с текстом

  Ответить  
 
 автор: Loki   (15.01.2009 в 15:36)   письмо автору
 
   для: xx77   (15.01.2009 в 14:26)
 

В логическом режиме нет ограничений на длину слов.
Количество результатов можно узнать средствами mysql (http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_found-rows). так что и придумывать ничего не надо.

  Ответить  
 
 автор: xx77   (15.01.2009 в 15:58)   письмо автору
 
   для: Loki   (15.01.2009 в 15:36)
 

ограничения есть ,
например не находит слово за слово +за , но находит правда +за* , сто делает заметно долго , и с результатом 6890 страниц, мне кажется это число которое минимально индексируется.
Похоже 4 символа как-раз помогают избегать частого замедления , но найти так можно меньше ,
возможно иногда лучше сделать три , но перехватывать некоторые и эти stop-слова , насчёт которых я ещё не разобрался
SQL_CALC_FOUND_ROWS пожалуй единственное нормальное решение
, хотя уже заметно замедляет (как в прикреплённом файле и пишут)
, пусть даже после первого запроса меньше.
Всё сказывается если данных много,
Меня озадачило ещё то что файл индекса сразу весь прочитывается в память, незнаю как на oracle и прочих бывает

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

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