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

Форум MySQL

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Господа помогите с запросом ., весь мозг сломал!

Сообщения:  [1-6] 

 
 автор: Serj0002   (23.03.2012 в 06:18)   письмо автору
 
   для: Valick   (22.03.2012 в 08:54)
 

СПАСИБО; ЗАПРОС НЕМНОГО ПОДПРАВИЛ;теперь в 5млн строк ищет за тысячные секунды.... не хуже сфинкса)) написал индексатор для построения таких индексов со стримером портера... тема закрыта.
p.s. похоже мне нужен блог..

  Ответить  
 
 автор: Valick   (22.03.2012 в 08:54)   письмо автору
 
   для: Serj0002   (22.03.2012 в 05:38)
 

попробуйте :)

  Ответить  
 
 автор: Serj0002   (22.03.2012 в 05:38)   письмо автору
 
   для: Valick   (22.03.2012 в 04:45)
 

у меня база - есть данность и структуру ее менять низя )

Сделал нормальные индексы - не так уж все и плохо

тестовая база (542502 строки) - время запроса 0.397 s
На компе CPU 500мгц оперативка 256мег (виртуалка)

542502 строки соответствуют ~1000 страниц текста

Тормозновато конечно.

Я вообще с текстовым поиском никогда не работал.,

Подскажите знающие люди, если использовать FULLTEXT индексы, или в Sphinx, при сохранении того же функционала (ражирование результатов) прирост скорости будет?

Просто пытаюсь понять имеет ли смысл эту базу перенести в паралельную где текст хранится в человеческом виде... специально для поиска. (будет ли толк от этого или только сервак по мощнее спасет)

  Ответить  
 
 автор: Valick   (22.03.2012 в 04:45)   письмо автору
 
   для: Serj0002   (22.03.2012 в 04:27)
 

обычно полнотекстовым поиском пользуются

  Ответить  
 
 автор: Serj0002   (22.03.2012 в 04:27)   письмо автору
 
   для: Serj0002   (22.03.2012 в 02:05)
 

// ОТВЕЧАЮ САМ СЕБЕ - хранить слова в таком виде явно беспонтовая идея
// (за что спасибо разработчикам БД)
// Плоды бессоннной ночи -> уродливый тормозной запрос
// работает выводит все документы по рейтингу средней близости слов
// выводит список документов + в добавок еще склеивает слова так чтобы можно было
// прочитать что найдено ...

SELECT rating.pid, GROUP_CONCAT(`b` SEPARATOR ' ') as `w` FROM
(
SELECT
t1.pid,
avg(t2.s-t1.s) as avg_s

FROM
index AS t1,
index AS t2

WHERE t1.s < t2.s
AND t1.pid=t2.pid /* в одном документе */
AND t1.w="Но" /* Слово1 */
AND t2.w="," /* Слово2 */

GROUP BY pid
order by avg_s
) as rating,
index
where index.pid=rating.pid
GROUP BY pid

// Может... может можно как то лучше (на локальном запрос 1,5 ссекунды выполняется )
// а на загруженном серваке... мне кажется вообще все повиснет
// в запросе описанно только последовательность 2х слов... (я предпологаю формировать
// запрос динамически на пхп из всего что ввел пользователь в форму поиска)
// => каждое слово в поисковом запросе будет стоить серваку перелопачивания
// дополнительно подклеенной таблицы

// ппц ПОДСКАЖИТЕ КАК ОПТИМИЗИРОВАТЬ ЗАПРОС?!
// кто с подобной структурой хранения данных сталкивался....

  Ответить  
 
 автор: Serj0002   (22.03.2012 в 02:05)   письмо автору
 
 

Есть БД в mysql корпоративной поисковой системы. (с ней работает десктопная программа - каким образом х.з.)

в БД есть таблица - поисковый индекс (5млн строк) в индексе просто слова по порядку из каждого документа собраны

таблица index
стообцы:
word_id - слово (текст)
doc_id - номер документа
word_pos - смещение слова от начала документа (байт)

Мне нужно как то найти документы в которых встречается несколько заданных слов подряд к примеру слово1+слово2+слово3

Есть БД в mysql корпоративной поисковой системы. (с ней работает десктопная программа - каким образом х.з.)

в БД есть таблица - поисковый индекс (5млн строк) в индексе просто слова по порядку из каждого документа собраны

таблица index
стообцы:
word_id - слово (текст)
doc_id - номер документа
word_pos - смещение слова от начала документа (байт)

Мне нужно как то найти документы в которых встречается несколько заданных слов подряд к примеру слово1+слово2+слово3

Господа я уже отчаился., реально ли это сделать вообще?!
десктопная программа же как то по этому индексу ищет причем весьма шустро...

Сейчас поиск сделал просто по наличию всех слов в документе, но в результате выдает чуш!!!
важен именно порядок слов... (чтобы они были как в запросе)

десктопная софтина под винду как то еще ражирует результат в зависимости от расстояний между словами.,
то есть при поиске по запросу слово1+слово2:
вначале выдает документы содержащие слово1+слово2, потом слово1+ххх+слово2, потом слово1+ххх+ххх+слово2., но на это я уже забил хотябы точные вхождения бы найти...

  Ответить  

Сообщения:  [1-6] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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