За последние 24 часа нас посетили 16905 программистов и 1316 роботов. Сейчас ищут 1653 программиста ...

Полнотекстовая индексация

Тема в разделе "MySQL", создана пользователем snoggl, 20 июн 2007.

  1. snoggl

    snoggl Активный пользователь

    С нами с:
    18 ноя 2006
    Сообщения:
    41
    Симпатии:
    0
    Адрес:
    СПб
    Есть таблица
    id
    name тип varchar(255)
    text тип text

    количество строк в таблице более 100.000

    Вопрос - будет ли оптимально использовать полнотекстовую индексацию(FULLTEXT) для поля text, а для поля name - просто INDEX ?
     
  2. stas_t

    stas_t Активный пользователь

    С нами с:
    24 апр 2007
    Сообщения:
    500
    Симпатии:
    0
    Адрес:
    Courbevoie, France
    зависит от того, что будут искать...
     
  3. snoggl

    snoggl Активный пользователь

    С нами с:
    18 ноя 2006
    Сообщения:
    41
    Симпатии:
    0
    Адрес:
    СПб
    искаться будут строки, содержащие в себе слова, которые ввел пользователь
     
  4. stas_t

    stas_t Активный пользователь

    С нами с:
    24 апр 2007
    Сообщения:
    500
    Симпатии:
    0
    Адрес:
    Courbevoie, France
    хм... представил на секунду, как строки будут искаться на глазах изумлённой публики под ободряющие возгласы пользователей...

    если искомые слова находятся не в начале строки (т.е. если используется конструкция like '%слово%'), то обычный индекс вообще не спасёт. используйте fulltext для обоих полей
     
  5. snoggl

    snoggl Активный пользователь

    С нами с:
    18 ноя 2006
    Сообщения:
    41
    Симпатии:
    0
    Адрес:
    СПб
    мне интересно, как работает полнотекстовая индексация на очень большой таблице, сколько времени затрачивается на поиск
     
  6. armadillo

    armadillo Активный пользователь

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    быстрее чем перебором. Если у вас нет ограничения на память.
    если большие объемы - то я бы кешировал (добавлял) уже найденные слова в кросс-таблицу. или их хеш.
     
  7. snoggl

    snoggl Активный пользователь

    С нами с:
    18 ноя 2006
    Сообщения:
    41
    Симпатии:
    0
    Адрес:
    СПб
    а про кеширование и хэш где моно подробнее почитать?
     
  8. Davil

    Davil Guest

    Прекрасно. Даже лучше чем на маленькой.
     
  9. armadillo

    armadillo Активный пользователь

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    пока не надо. если хватает памяти - то просто полнотекстовый индекс.
     
  10. snoggl

    snoggl Активный пользователь

    С нами с:
    18 ноя 2006
    Сообщения:
    41
    Симпатии:
    0
    Адрес:
    СПб
    большая, маленькая таблица - понятия размытые, поэтому уточню: для меня большая - это около полутора миллионов записей.
    У меня стоит задача осуществить поиск на сайте во всех документах. Есть два варианта решений - либо полнотекстовая индексация, либо создать собственную индексацию. Слышал, что индексация в mysql еще плохо работает.
     
  11. Davil

    Davil Guest

    Смотря в каком mysql.
    Вероятно такие слухи ходили года 3 назад...
     
  12. snoggl

    snoggl Активный пользователь

    С нами с:
    18 ноя 2006
    Сообщения:
    41
    Симпатии:
    0
    Адрес:
    СПб
    mysql 4.1.20
     
  13. armadillo

    armadillo Активный пользователь

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    при таких объемах любую оптимизацию все равно надо сравнивать ручками.

    и в любом случае я бы запретил полный поиск и заставил указывать раздел для поиска.