Spec-Zone.ru › MySQL 9.2

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 см. на GitHub в проекте MeCab: Еще один морфологический и морфологический анализатор.

Установка плагина анализатора 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, выполните следующие действия:

  1. В файле конфигурации 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, «Использование файлов параметров».

  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
  3. Измените файл конфигурации 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, когда используется этот словарь.

  4. Перезапустите MySQL.

  5. Установите плагин анализатора MeCab:

    Плагин анализатора MeCab устанавливается с помощью INSTALL PLUGIN. Имя плагина — mecab, а имя разделяемой библиотеки — libpluginmecab.so. Дополнительную информацию об установке плагинов см. в Разделе 7.6.1, «Установка и удаление плагинов».

    INSTALL PLUGIN mecab SONAME 'libpluginmecab.so';
    

    После установки плагин анализатора MeCab загружается при каждом обычном перезапуске MySQL.

  6. Проверьте загрузку плагина анализатора MeCab с помощью оператора SHOW PLUGINS.

    mysql> SHOW PLUGINS;

    Плагин mecab должен появиться в списке плагинов.

Создание индекса FULLTEXT с использованием анализатора MeCab

Чтобы создать индекс FULLTEXT, использующий анализатор mecab, укажите WITH PARSER ngram с помощью CREATE TABLE, ALTER TABLE или CREATE INDEX.

В этом примере показано создание таблицы с индексом mecab FULLTEXT, вставка образцовых данных и просмотр токенизированных данных в таблице Information Schema 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 «Full-Text Stopwords».

Поиск по терминам парсером 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.

  1. Загрузите пакеты 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.

  2. Установите mecab:

    $> tar zxfv mecab-0.996.tar
    $> cd mecab-0.996
    $> ./configure
    $> make
    $> make check
    $> su
    $> make install
    
  3. Установите mecab-ipadic:

    $> tar zxfv mecab-ipadic-2.7.0-20070801.tar
    $> cd mecab-ipadic-2.7.0-20070801
    $> ./configure
    $> make
    $> su
    $> make install
    
  4. Скомпилируйте 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.
https://docs.oracle.com/cd/E17952_01/mysql-9.2-en/fulltext-search-mecab.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API