Связь и интернет Архив Программирование
   
Сделать стартовойСделать закладку            
   ПОИСК  
   
Главная / MySQL / Справочник по языку MySQL /
8  Perl
8  PHP
8  JavaScript
8  HTML
8  DHTML
8  XML
8  CSS
8  C / C++
8  Pascal и Delphi
8  Турбо Ассемблер
8  MySQL
8  CASE-технологии
8  Алгоритмы
8  Python
8  Обратная связь
8  Гостевая книга
Новости о мире


Полнотекстовый поиск в MySQL - Программирование от RIN.RU
Полнотекстовый поиск в MySQL



Ограничения для полнотекстового поиска


  • Все параметры функции MATCH() должны быть столбцами одной и той же таблицы, т.е. частью одного и того же индекса FULLTEXT, за исключением работы MATCH() в режиме IN BOOLEAN MODE.

  • Список столбцов в команде MATCH() должен точно соответствовать списку столбцов в определении индекса FULLTEXT для этой таблицы, за исключением работы данной функции MATCH() в режиме IN BOOLEAN MODE.

  • Аргумент в выражении AGAINST() должен быть неизменяемой строкой.




Тонкая настройка полнотекстового поиска в MySQL


К сожалению, полнотекстовый поиск имеет еще мало настраиваемых пользователем параметров, хотя для последующих модификаций добавление некоторого их количества является очень важной задачей (TODO). Однако при наличии исходного дистрибутива MySQL ( cм. раздел Установка исходного дистрибутива MySQL) имеется больше возможностей управлять полнотекстовым поиском.


Следует отметить, что полнотекстовый поиск был тщательно настроен так, чтобы обеспечить наилучшую эффективность выполнения данной операции. Если изменить установленный по умолчанию режим работы, то в большинстве случаев результаты поиска станут только хуже. Поэтому не вносите какие-либо правки в код MySQL, если не знаете наверняка, что вы делаете!


    Минимальная длина подлежащих индексации слов определяется в MySQL переменной ft_min_word_len (см. раздел SHOW VARIABLES). Установите желаемую величину этой переменной и создайте заново индексы FULLTEXT (эта переменная доступна только в версии MySQL 4.0).

  • Список стоп-слов (ЭstopwordЭ) определяется в 'myisam/ft_static.c'. Модифицируйте на свой вкус, перекомпилируйте MySQL и создайте заново индексы FULLTEXT.

  • 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. См. раздел SHOW VARIABLES.
    Однако эта переменная доступна только для чтения, ее значение устанавливается в 'myisam/ft_static.c'.




Предстоящие доработки по полнотекстовому поиску


  • Сделать все операции с индексом FULLTEXT более быстрыми.

  • Операторы схожести

  • Поддержка для слов, тождественных индексам, - чтобы словами могли быть любые строки, которые пользователь пожелает трактовать как слова, например "C++", "AS/400", "TCP/IP" и т.д.

  • Поддержка полнотекстового поиска в таблицах типа MERGE.

  • Поддержка многобайтовых наборов символов.

  • Сделать список стоп-слов (''stopword'') зависящим от языка данных.

  • Стемминг (в зависимости от языка данных, конечно).

  • Обобщенный синтаксический пре-анализатор с определяемым пользователем функциониями (UDF).

  • Сделать данную модель поиска более гибкой (путем добавления ряда регулируемых параметров к FULLTEXT в CREATE/ALTER TABLE).


<<<  Назад
 1  2 


 8  Комментарии к статье  8 8  Обсудить в чате

8  В тему

Структура языка

Типы данных столбцов

Функции, используемые в операторах SELECT и WHERE (часть 1)

Функции, используемые в операторах SELECT и WHERE (часть 2)

Обработка данных: SELECT, INSERT, UPDATE, DELETE

Определение данных: CREATE, DROP, ALTER

Основные команды пользовательских программ MySQL

Команды управления транзакциями и блокировками в MySQL

Кэш запросов в MySQL

 
  
  
    Copyright ©  RIN 2003 - 2004      * Обратная связь