6.8. Полнотекстовый поиск в MySQL
6.8.2. Тонкая настройка полнотекстового поиска в MySQL
К сожалению, полнотекстовый поиск имеет еще мало настраиваемых пользователем параметров, хотя для последующих модификаций добавление некоторого их количества является очень важной задачей (TODO). Однако при наличии исходного дистрибутива MySQL (see Раздел 2.3, «Установка исходного дистрибутива MySQL») имеется больше возможностей управлять полнотекстовым поиском.
Следует отметить, что полнотекстовый поиск был тщательно настроен так, чтобы обеспечить наилучшую эффективность выполнения данной операции. Если изменить установленный по умолчанию режим работы, то в большинстве случаев результаты поиска станут только хуже. Поэтому не вносите какие-либо правки в код MySQL, если не знаете наверняка, что вы делаете!
Минимальная длина подлежащих индексации слов определяется в MySQL переменной ft_min_word_len (see Раздел 4.5.6.4, «SHOW VARIABLES»). Установите желаемую величину этой переменной и создайте заново индексы FULLTEXT (эта переменная доступна только в версии MySQL 4.0).
Список стоп-слов может быть загружен с файла, указанного в переменной ft_stopword_file. See Раздел 4.5.6.4, «SHOW VARIABLES». После модификации стоп-листа перестройте ваши полнотекствые индексы. (Эта переменная введена в MySQL 4.0.10)
50-процентный порог определяется выбранной конкретной схемой присваивания весовых коэффициентов. Чтобы отменить ее, измените следующую строку в myisam/ftdefs.h:
#define GWS_IN_USE GWS_PROB
на:
#define GWS_IN_USE GWS_FREQ
Затем перекомпилируйте MySQL. Создавать заново индексы в этом случае нет необходимости.
Примечание: таким образом вы существенно ухудшите способность MySQL продуцировать адекватные величины релевантности для функции MATCH(). Если действительно необходим поиск для таких общеупотребительных слов, то было бы лучше использовать вместо этого поиск в режиме IN BOOLEAN MODE, при котором не предусмотрен 50-процентный порог.
Иногда отладчик поисковой машины желает изменить операторы, используемые для логического поиска по полному тексту. Эти операторы определяются переменной ft_boolean_syntax. See Раздел 4.5.6.4, «SHOW VARIABLES». Однако эта переменная доступна только для чтения, ее значение устанавливается в myisam/ft_static.c.
Наиболее простым способом перестроить полнотекстовый индекс в тех случаях, когда это нужно - это вот такая команда: