Поиск по БД Mysql размером 50Гб

Всем привет!
У меня есть база ключевых слов на 50Гб. Она уже в таблице MySQL
Есть столбцы key | num | len
key - сам запрос
num - количество слов
len - количество символов

Когда делаешь полнотекстовый поиск как `key ` LIKE 'скачать бесплатно%'
то процессор i7 загружается на несколько минут.

Подскажите, что можно придумать, для быстрого поиска?

Есть идеи перевести все слова в цифры, т.е. у каждого слова будет свой ID, и делать поиск по значениям. По идее, это быстрее, чем искать слова.

Но получается, что поиск опять будет типа `key ` LIKE '0001 0002'

LIKE - это долго.

Может есть какие-то скрипты, которые быстро ищую по БД?
 
Спасибо! Сфинкс сейчас поюзаю.
Полнотекстовый поиск не подойдет, потому что поиск будет типа LIKE 'как %бег%правильн%' - это очень долго будет работать. Надо у алгоритмов Яндекса что-то позаимствовать) Никто не знает секретов?
 

prolis

Новичок
Есть идеи перевести все слова в цифры, т.е. у каждого слова будет свой ID, и делать поиск по значениям. По идее, это быстрее, чем искать слова.
Но получается, что поиск опять будет типа `key ` LIKE '0001 0002'
не совсем так, поиск сначала вернёт коды 0001 и 0002 из таблицы keywords, по кодам джойнишь фразы, откуда эти слова взялись и уже в конце отфильтровать фразы лайком, чтобы слова были в правильном порядке.
 
Короче, я немного ошибся. БД будет где-то на 200Гб. Она все еще импортируется.
Вообще, что можно сделать в таком случае? LIKE тут точно не подойдет.
Как-то надо все оцифровывать, упрощать... чтобы быстро выдавал результат.
 

Breeze

goshogun
Команда форума
Партнер клуба
200Гб говорит только о съедаемом месте на диске, больше ни о чем
показывай ddl таблицы
сколько записей всего импортируешь, какого характера, средняя длина key?
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
ничего не сделать, отказываться от проекта
без специальных знаний такое не решается
 

Тугай

Новичок
Для начала, надо подтянуть свой уровень по РСУБД и SQL, чтоб не писать такой белиберды как LIKE '0001 0002' и LIKE 'как %бег%правильн%'.

Если Sphinx - "сложно", то как вариант писать свою упрощенную реализацию полнотекстового поиска.
Нужна таблица words - всех уникальных слов входящих в key и таблица key_to_words - которая свяжет таблицу ключевых фраз и слов входящих в нее.

Т.е. идея выделить и присвоить каждому слову ID - правильная, но а дальше читай книжки по SQL, кроме LIKE там будет про JOIN и много чего еще.

И встроенный полнотекстовый поиск - подходит, ознакомся что это такое и как его использовать. (там тоже не про LIKE)
Будет быстро но есть недостаток - нет возможности управлять тем что считать словом.

Так-что да "без специальных знаний такое не решается" - но это не секретные технологии гугла или яндекса, а знания специалистов, а не ламера.
 
пришла идея привести все слова в базовую словоформу, через phpmorphy!


Для начала, надо подтянуть свой уровень по РСУБД и SQL, чтоб не писать такой белиберды как LIKE '0001 0002' и LIKE 'как %бег%правильн%'.

Если Sphinx - "сложно", то как вариант писать свою упрощенную реализацию полнотекстового поиска.
Нужна таблица words - всех уникальных слов входящих в key и таблица key_to_words - которая свяжет таблицу ключевых фраз и слов входящих в нее.

Т.е. идея выделить и присвоить каждому слову ID - правильная, но а дальше читай книжки по SQL, кроме LIKE там будет про JOIN и много чего еще.

И встроенный полнотекстовый поиск - подходит, ознакомся что это такое и как его использовать. (там тоже не про LIKE)
Будет быстро но есть недостаток - нет возможности управлять тем что считать словом.

Так-что да "без специальных знаний такое не решается" - но это не секретные технологии гугла или яндекса, а знания специалистов, а не ламера.
Спасибо, хорошая идея!
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
ждем следующую тему: как организовать кеширование для БД размером 50 Гб
 
Сверху