crocodile2u
http://vbolshov.org.ru
Оптимизация поиска.
Итак, имеется старый сайт с поиском по каталогу. По определенным причинам, в поиске используются запросы вида ... LIKE %smth% ...
Недавно произошло следующее:
в одну из таблиц каталога администрация сайта забила ок. 500 тыс. записей. Поисковые запросы стали нехило тормозить и пользователь MySQL был отключен хостинг-провайдером.
Собсно, вопросы:
1) Не слишком ли это вообще большой объем данных для того чтобы мускль нормально с ним работал? (подозреваю, конечно, что с этим все в порядке, но все-таки)
2) Сможет ли помочь введение полнотекстовых индексов? (И кстати, можно ли сделать полнотекстовый поиск по части слова?)
3) Как наиболее оптимально можно организовать поиск (пока что существует требование искать по части слова, а также есть следующая "фишка": при введении пользователем таких символов как "-", " " должны найтись все строки, содержащие или НЕ содержащие эти символы на тех местах, в кот. их ввел пользователь, то есть, если поисковая строка = "DF-X 123", нужно найти все строки : "DF-X 123", "DFX123", "DF-X123", "DFX 123").
Понимаю, что третий вопрос слишком наглый, и, возможно, я его недостаточно внятно объяснил.
Расскажу, как это работает сейчас:
из поисковой строки вырезаются эти самые символы, получаем набор искомых строк и составляем запрос типа: field LIKE '%stroka1%' OR field LIKE '%stroka2%' OR field LIKE '%stroka3%' и т. д.
Буду благодарен за любую помощь: информацию или какие-то конкретные предложения, или ... в общем, любую помощь.
Итак, имеется старый сайт с поиском по каталогу. По определенным причинам, в поиске используются запросы вида ... LIKE %smth% ...
Недавно произошло следующее:
в одну из таблиц каталога администрация сайта забила ок. 500 тыс. записей. Поисковые запросы стали нехило тормозить и пользователь MySQL был отключен хостинг-провайдером.
Собсно, вопросы:
1) Не слишком ли это вообще большой объем данных для того чтобы мускль нормально с ним работал? (подозреваю, конечно, что с этим все в порядке, но все-таки)
2) Сможет ли помочь введение полнотекстовых индексов? (И кстати, можно ли сделать полнотекстовый поиск по части слова?)
3) Как наиболее оптимально можно организовать поиск (пока что существует требование искать по части слова, а также есть следующая "фишка": при введении пользователем таких символов как "-", " " должны найтись все строки, содержащие или НЕ содержащие эти символы на тех местах, в кот. их ввел пользователь, то есть, если поисковая строка = "DF-X 123", нужно найти все строки : "DF-X 123", "DFX123", "DF-X123", "DFX 123").
Понимаю, что третий вопрос слишком наглый, и, возможно, я его недостаточно внятно объяснил.
Расскажу, как это работает сейчас:
из поисковой строки вырезаются эти самые символы, получаем набор искомых строк и составляем запрос типа: field LIKE '%stroka1%' OR field LIKE '%stroka2%' OR field LIKE '%stroka3%' и т. д.
Буду благодарен за любую помощь: информацию или какие-то конкретные предложения, или ... в общем, любую помощь.