14.9.9 Плагин анализатора полнотекстового поиска MeCab
Встроенный анализатор полнотекстового поиска MySQL использует пробелы между словами в качестве разделителей для определения начала и конца слов, что является ограничением при работе с идеографическими языками, не использующими разделителей слов. Для решения этой проблемы в MySQL представлен плагин анализатора полнотекстового поиска MeCab. Плагин анализатора полнотекстового поиска MeCab поддерживается для использования с InnoDB и MyISAM.
MySQL также предоставляет плагин анализатора полнотекстового поиска ngram, поддерживающий японский язык. Дополнительную информацию можно найти в разделе 14.9.8 «Плагин анализатора полнотекстового поиска ngram».
Плагин анализатора полнотекстового поиска MeCab — это плагин анализатора полнотекстового поиска для японского языка, который разбивает последовательность текста на значимые слова. Например, MeCab разбивает “データベース管理” (“Управление базами данных”) на “データベース” (“База данных”) и “管理” (“Управление”). В сравнении, плагин анализатора полнотекстового поиска ngram разбивает текст на непрерывную последовательность n символов, где n представляет число от 1 до 10.
Помимо разбиения текста на осмысленные слова, индексы MeCab обычно меньше, чем индексы ngram, а поиск по полнотекстовому анализу MeCab, как правило, быстрее. Одним из недостатков является то, что анализ документов с помощью плагина полнотекстового поиска MeCab может занимать больше времени по сравнению с плагином полнотекстового поиска ngram.
Синтаксис полнотекстового поиска, описанный в разделе 14.9 «Функции полнотекстового поиска», применим к плагину анализатора MeCab. Различия в поведении анализа описаны в этом разделе. Применимы также конфигурационные параметры, относящиеся к полнотекстовому поиску.
Дополнительную информацию об анализаторе MeCab можно найти в проекте MeCab: ещё один анализатор морфологии и частей речи на Github.
Установка плагина анализатора MeCab
Плагин анализатора MeCab требует mecab и mecab-ipadic.
На поддерживаемых платформах Fedora, Debian и Ubuntu (кроме Ubuntu 12.04, где системная версия mecab слишком старая), MySQL динамически связывается с установкой системного mecab, если она установлена по умолчанию. На других поддерживаемых платформах Unix-подобного типа libmecab.so статически связан в libpluginmecab.so, который находится в каталоге плагинов MySQL. mecab-ipadic включён в двоичные файлы MySQL и находится в .MYSQL_HOME\lib\mecab
Вы можете установить mecab и mecab-ipadic, используя утилиту управления пакетами (на Fedora, Debian и Ubuntu), или вы можете скомпилировать mecab и mecab-ipadic из исходного кода. Информацию об установке mecab и mecab-ipadic с помощью утилиты управления пакетами см. в разделе по установке MeCab из двоичного дистрибутива (необязательно). Если вы хотите скомпилировать mecab и mecab-ipadic из исходного кода, см. раздел по сборке MeCab из исходного кода (необязательно).
В Windows libmecab.dll находится в каталоге MySQL bin. mecab-ipadic расположен в .MYSQL_HOME/lib/mecab
Для установки и настройки плагина анализатора MeCab выполните следующие действия:
-
В файле конфигурации MySQL задайте параметр конфигурации
mecab_rc_fileпути к файлу конфигурацииmecabrc, который является файлом конфигурации для MeCab. Если вы используете пакет MeCab, поставляемый с MySQL, то файлmecabrcнаходится вMYSQL_HOME/lib/mecab/etc/.[mysqld] loose-mecab-rc-file=MYSQL_HOME/lib/mecab/etc/mecabrc
Префикс
looseявляется модификатором параметра. Параметрmecab_rc_fileне распознаётся MySQL до установки плагина анализатора MeCaB, но его необходимо установить перед попыткой установки плагина анализатора MeCaB. Префиксlooseпозволяет перезапустить MySQL, не столкнувшись с ошибкой из-за нераспознанной переменной.Если вы используете свою собственную установку MeCab или собираете MeCab из исходного кода, путь к файлу конфигурации
mecabrcможет отличаться.Дополнительную информацию о файле конфигурации MySQL и его расположении см. в разделе 6.2.2.2 «Использование файлов параметров».
-
Также в файле конфигурации MySQL задайте минимальный размер токена 1 или 2, что рекомендуется для использования с анализатором MeCab. Для таблиц
InnoDBминимальный размер токена определяется параметром конфигурацииinnodb_ft_min_token_size, значение которого по умолчанию равно 3. Для таблицMyISAMминимальный размер токена определяетсяft_min_word_len, значение которого по умолчанию равно 4.[mysqld] innodb_ft_min_token_size=1
-
Измените файл конфигурации
mecabrc, чтобы указать используемый словарь. Пакетmecab-ipadic, поставляемый с двоичными файлами MySQL, содержит три словаря (ipadic_euc-jp,ipadic_sjisиipadic_utf-8). Файл конфигурацииmecabrc, входящий в состав MySQL, содержит запись, аналогичную следующей:dicdir = /path/to/mysql/lib/mecab/lib/mecab/dic/ipadic_euc-jp
Например, для использования словаря
ipadic_utf-8измените запись следующим образом:dicdir=
MYSQL_HOME/lib/mecab/dic/ipadic_utf-8Если вы используете собственную установку MeCab или собрали MeCab из исходного кода, запись по умолчанию
dicdirв файлеmecabrc, а также словари и их расположение, скорее всего, будут отличаться.ПримечаниеПосле установки плагина анализатора MeCab вы можете использовать переменную состояния
mecab_charsetдля просмотра набора символов, используемого с MeCab. Три словаря MeCab, поставляемые с двоичным файлом MySQL, поддерживают следующие наборы символов.Словарь
ipadic_euc-jpподдерживает наборы символовujisиeucjpms.Словарь
ipadic_sjisподдерживает наборы символовsjisиcp932.Словарь
ipadic_utf-8поддерживает наборы символовutf8mb3иutf8mb4.
mecab_charsetсообщает только о первом поддерживаемом наборе символов. Например, словарьipadic_utf-8поддерживает какutf8mb3, так иutf8mb4.mecab_charsetвсегда сообщаетutf8при использовании этого словаря. Перезапустите MySQL.
-
Установите плагин анализатора MeCab:
Плагин анализатора MeCab устанавливается с помощью
INSTALL PLUGIN. Имя плагина —mecab, а имя динамической библиотеки —libpluginmecab.so. Дополнительную информацию об установке плагинов см. в разделе 7.6.1 «Установка и удаление плагинов».INSTALL PLUGIN mecab SONAME 'libpluginmecab.so';
После установки плагин анализатора MeCab загружается при каждом обычном перезапуске MySQL.
-
Проверьте, что плагин анализатора MeCab загружен, используя оператор
SHOW PLUGINS.mysql> SHOW PLUGINS;
Плагин
mecabдолжен появиться в списке плагинов.
Создание индекса FULLTEXT с использованием анализатора MeCab
Для создания индекса FULLTEXT с использованием анализатора MeCab укажите WITH PARSER ngram с CREATE TABLE, ALTER TABLE или CREATE INDEX.
В этом примере показано создание таблицы с индексом mecab FULLTEXT, вставка образцовых данных и просмотр разложенных токенов в таблице Информационной схемы INNODB_FT_INDEX_CACHE:
mysql> USE test;
mysql> CREATE TABLE articles (
id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
title VARCHAR(200),
body TEXT,
FULLTEXT (title,body) WITH PARSER mecab
) ENGINE=InnoDB CHARACTER SET utf8mb4;
mysql> SET NAMES utf8mb4;
mysql> INSERT INTO articles (title,body) VALUES
('データベース管理','このチュートリアルでは、私はどのようにデータベースを管理する方法を紹介します'),
('データベースアプリケーション開発','データベースアプリケーションを開発することを学ぶ');
mysql> SET GLOBAL innodb_ft_aux_table="test/articles";
mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_INDEX_CACHE ORDER BY doc_id, position;
Для добавления индекса FULLTEXT в существующую таблицу можно использовать ALTER TABLE или CREATE INDEX. Например:
CREATE TABLE articles (
id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
title VARCHAR(200),
body TEXT
) ENGINE=InnoDB CHARACTER SET utf8mb4;
ALTER TABLE articles ADD FULLTEXT INDEX ft_index (title,body) WITH PARSER mecab;
# Or:
CREATE FULLTEXT INDEX ft_index ON articles (title,body) WITH PARSER mecab;
Обработка пробелов в анализаторе MeCab
Парсер MeCab использует пробелы в качестве разделителей в строках запросов. Например, парсер MeCab разбивает データベース管理 на データベース и 管理.
Обработка стоп-слов парсером MeCab
По умолчанию парсер MeCab использует список стоп-слов по умолчанию, который содержит короткий список английских стоп-слов. Для списка стоп-слов, применимого к японскому языку, необходимо создать свой собственный. Информацию о создании списков стоп-слов см. в Разделе 14.9.4 «Стоп-слова полных текстов».
Поиск по терминам в парсере MeCab
При поиске в режиме естественного языка термин поиска преобразуется в объединение токенов. Например, データベース管理 преобразуется в データベース 管理.
SELECT COUNT(*) FROM articles
WHERE MATCH(title,body) AGAINST('データベース管理' IN NATURAL LANGUAGE MODE);
При поиске в булевом режиме термин поиска преобразуется в фразу поиска. Например, データベース管理 преобразуется в データベース 管理.
SELECT COUNT(*) FROM articles
WHERE MATCH(title,body) AGAINST('データベース管理' IN BOOLEAN MODE);
Поиск с подстановкой в парсере MeCab
Термины поиска с подстановкой не разбиваются на токены. Поиск по データベース管理* выполняется по префиксу データベース管理.
SELECT COUNT(*) FROM articles
WHERE MATCH(title,body) AGAINST('データベース*' IN BOOLEAN MODE);
Поиск по фразам в парсере MeCab
Фразы разбиваются на токены. Например, データベース管理 разбивается на データベース 管理.
SELECT COUNT(*) FROM articles
WHERE MATCH(title,body) AGAINST('"データベース管理"' IN BOOLEAN MODE);
Установка MeCab из бинарного дистрибутива (необязательно)
В этом разделе описывается, как установить mecab и mecab-ipadic из бинарного дистрибутива с помощью утилиты управления пакетами для данной операционной системы. Например, в Fedora можно использовать Yum для установки:
$> yum mecab-devel
В Debian или Ubuntu можно выполнить установку через APT:
$> apt-get install mecab
$> apt-get install mecab-ipadic
Установка MeCab из исходного кода (необязательно)
Если вы хотите скомпилировать mecab и mecab-ipadic из исходного кода, ниже приведены основные шаги установки. Дополнительную информацию см. в документации MeCab.
Загрузите пакеты tar.gz для
mecabиmecab-ipadicс http://taku910.github.io/mecab/#download. По состоянию на февраль 2016 года, последние доступные пакеты — этоmecab-0.996.tar.gzиmecab-ipadic-2.7.0-20070801.tar.gz.-
Установите
mecab:$>
tar zxfv mecab-0.996.tar$>cd mecab-0.996$>./configure$>make$>make check$>su$>make install -
Установите
mecab-ipadic:$>
tar zxfv mecab-ipadic-2.7.0-20070801.tar$>cd mecab-ipadic-2.7.0-20070801$>./configure$>make$>su$>make install -
Скомпилируйте MySQL, используя параметр CMake
WITH_MECAB. Установите параметрWITH_MECABв значениеsystem, если вы установилиmecabиmecab-ipadicв стандартном каталоге.-DWITH_MECAB=system
Если вы определили пользовательский каталог установки, установите
WITH_MECABв пользовательский каталог. Например:-DWITH_MECAB=/path/to/mecab
© 2025 Oracle
Licensed under the GPLv2 License.