Я бы не рекомендовал использовать FULLTEXT index на чем-то серьезном.
Не из-за крашей, а из-за ограниченных возможностей. Впрочем, любой
разработчик и сам это обнаружит очень быстро.
>Ага.. 4.1 "работает"... большие таблицы FULLTEXT index'ом крашаются >через раз.. если не каждый раз. На маленьких все ок.
Хм. А в чем проблема конретно? У нас на 10Mb таблицах не возникало проблем с FULLTEXT. Надо учитывать, что MySQL была перекомпилена без учета стоп слов.
Тогда глупый вопрос (без заковырки - нужно для дела) - есть ли готовые алгоритмы? И где почитать про это?
И, по-моему, единственным значимым, ограничением FULLTEXT поиска сейчас является ограничение на длину слова - более трёх знаков... Или я что-то пропустил?
>И, по-моему, единственным значимым, ограничением FULLTEXT поиска сейчас является ограничение на длину слова - более трёх знаков... Или я что-то пропустил?
Длина слова регулируется переменной ft_min_word_len
не забудьте переиндексировать таблицу если измените эту переменную
2 anonymous (*) (23.10.2003 13:04:41)
А не подскажешь как компилил + что в my.cnf нарисовано?
А то у меня прим. 150 запросов в сек. и раз в сутки валится...:(
А хез. Обычно заявляет, что индекс поврежден у одной из таблиц базы.
Обычно же после фикса проблема исчезает.
Разок самую важную таблицу запорола (впрочем это было давненько и, вероятно, это была еще 3шка) - пришлось восстанавливаться.
Последний раз порола индекс буквально позавчера.
Нафик эту mysql. Перейду для начала на postgresql при первой же возможности (пока слишком многое завязано на ЭТО).
> Тогда глупый вопрос (без заковырки - нужно для дела) - есть ли готовые алгоритмы? И где почитать про это?
Где читать - не знаю. Мне нужна была индексация для конкретной задачи.
Я экспериментировал с FUULTEXT INDEX. Не прошло. И вот почему. У меня
частые обновления базы. С индексом они идут медленно. Без него - останавливается поиск на время обновления. Далее, FULLTEXT INDEX заточен
скорее под поиск в статьях и книгах. У меня прайс-листы с товаром.
Понятие "word" в этом индексе не совсем соответствует тому, что мне
надо. Коды и модели часто пишутся с разными разделителями. Это надо
учитывать. Стоп-слова там вообще не нужны. Ограничение на длину тоже не
нужно. В ранних версиях это дело не настраивалось. Короче, оказалось
проще написать свой индексатор, который создает отдельную таблицу.
Индексатор включается после каждого добавления, и создается во временной
таблице, которая переименовывается в основную после завершения
индексации. Работает довольно быстро. 10-15 сек на 300тыс записей со
средней длиной текстового поля 150 символов.