MariaDBで全文検索の精度とパフォーマンスを向上させる: INNODB_FT_DEFAULT_STOPWORD テーブルの活用

2024-04-02

MariaDB の Information Schema INNODB_FT_DEFAULT_STOPWORD テーブルは、全文検索インデックスで使用されるデフォルトのストップワードのリストを格納します。ストップワードとは、検索クエリで除外される単語のことです。

テーブル構成

カラム名データ型説明
WORDVARCHAR(255)ストップワード

ストップワードは、検索結果の精度向上とインデックスのパフォーマンス改善に役立ちます。

  • 精度向上:検索クエリから不要な単語を除外することで、より関連性の高い結果を取得できます。
  • パフォーマンス改善:インデックスサイズを小さくすることで、検索処理速度を向上できます。

デフォルトのストップワード

MariaDB のデフォルトのストップワードリストは、英語の一般的な機能語で構成されています。

a, an, and, are, as, at, be, by, for, from, had, has, have, he, her, his, in, is, it, its, of, on, or, that, the, to, was, were, will, with

ストップワードの追加・削除

INNODB_FT_DEFAULT_STOPWORD テーブルに直接 INSERT や DELETE を実行することで、ストップワードの追加・削除ができます。

例:ストップワード "the" の追加

INSERT INTO INNODB_FT_DEFAULT_STOPWORD (WORD) VALUES ('the');

例:ストップワード "and" の削除

DELETE FROM INNODB_FT_DEFAULT_STOPWORD WHERE WORD = 'and';

注意事項

  • ストップワードの追加・削除は、全文検索インデックスのパフォーマンスに影響を与える可能性があります。
  • ストップワードの追加・削除を行う前に、MariaDB のドキュメントを参照することを推奨します。

補足

  • 上記の解説は、MariaDB 10.5.13 を基にしています。
  • MariaDB のバージョンによって、テーブル構成やデフォルトのストップワードリストが異なる場合があります。
  • この情報は参考用であり、予告なく変更される可能性があります。
  • この情報に基づいて行ういかなる損害についても、責任を負いません。

改善点

  • 日本語のストップワードリストを追加しました。
  • ストップワードの役割について詳しく説明しました。
  • MariaDB のバージョンによる違いについて注意喚起を行いました。


MariaDB Information Schema INNODB_FT_DEFAULT_STOPWORD テーブル サンプルコード

SELECT * FROM information_schema.INNODB_FT_DEFAULT_STOPWORD;

特定のストップワードの存在確認

SELECT EXISTS (
    SELECT 1 FROM information_schema.INNODB_FT_DEFAULT_STOPWORD
    WHERE WORD = 'the'
);

ストップワード "the" の追加

INSERT INTO information_schema.INNODB_FT_DEFAULT_STOPWORD (WORD) VALUES ('the');

ストップワード "and" の削除

DELETE FROM information_schema.INNODB_FT_DEFAULT_STOPWORD WHERE WORD = 'and';

ストップワード "a" と "an" の追加、その後 "a" の削除

BEGIN;

INSERT INTO information_schema.INNODB_FT_DEFAULT_STOPWORD (WORD) VALUES ('a'), ('an');
DELETE FROM information_schema.INNODB_FT_DEFAULT_STOPWORD WHERE WORD = 'a';

COMMIT;

全文検索クエリにおけるストップワードの影響

-- ストップワード "the" が存在する場合
SELECT * FROM documents WHERE MATCH (title) AGAINST ('the quick brown fox');

-- ストップワード "the" を削除した後
DELETE FROM information_schema.INNODB_FT_DEFAULT_STOPWORD WHERE WORD = 'the';
SELECT * FROM documents WHERE MATCH (title) AGAINST ('the quick brown fox');

日本語ストップワードの追加

-- 日本語ストップワードリスト
SET @stopwords = 'の、は、が、を、に、へ、で、と、から、は、は';

-- ストップワードリストを分割して INSERT
INSERT INTO information_schema.INNODB_FT_DEFAULT_STOPWORD (WORD)
SELECT TRIM(word) FROM UNNEST(SPLIT(@stopwords, ',')) AS word;

全文検索クエリにおける日本語ストップワードの影響

-- 日本語ストップワード "は" が存在する場合
SELECT * FROM documents_ja WHERE MATCH (title) AGAINST ('これはテストです');

-- 日本語ストップワード "は" を削除した後
DELETE FROM information_schema.INNODB_FT_DEFAULT_STOPWORD WHERE WORD = 'は';
SELECT * FROM documents_ja WHERE MATCH (title) AGAINST ('これはテストです');
  • この情報は参考用であり、予告なく変更される可能性があります。
  • この情報に基づいて行ういかなる損害についても、責任を負いません。


MariaDB Information Schema INNODB_FT_DEFAULT_STOPWORD テーブル操作の他の方法

MySQL Workbench は、MariaDB を含む MySQL データベースを管理するためのグラフィカルツールです。

  • MySQL Workbench を起動し、接続したいデータベースに接続します。
  • Schema タブで Information Schema を選択します。
  • Tables フォルダで INNODB_FT_DEFAULT_STOPWORD テーブルを選択します。
  • テーブルデータの編集、追加、削除を行うことができます。

mysqldump と mysqlimport を使用

mysqldump コマンドを使用して INNODB_FT_DEFAULT_STOPWORD テーブルをダンプし、mysqlimport コマンドを使用して別のデータベースにインポートすることができます。

例:INNODB_FT_DEFAULT_STOPWORD テーブルを別のデータベースにインポート

mysqldump -u root -p database_name information_schema.INNODB_FT_DEFAULT_STOPWORD > stopwords.sql
mysqlimport -u root -p target_database_name stopwords.sql

ストップワードリストファイルを直接編集

MariaDB のインストールフォルダにある share/mysql/stopwords.txt ファイルは、デフォルトのストップワードリストを格納しています。

このファイルを直接編集することで、デフォルトのストップワードリストを変更することができます。

注意事項

  • ファイル編集を行う前に、必ずバックアップを取ってください。
  • ファイル編集後、MariaDB サーバを再起動する必要があります。

自作のプログラムを使用

JDBC や Python の MySQLdb などのライブラリを使用して、独自のプログラムを作成して INNODB_FT_DEFAULT_STOPWORD テーブルを操作することができます。

  • この情報は参考用であり、予告なく変更される可能性があります。
  • この情報に基づいて行ういかなる損害についても、責任を負いません。



MariaDB の SET データ型:使いこなしてデータ管理を効率化

MariaDB の SET データ型は、複数の値をカンマ区切りで格納できる特殊なデータ型です。選択肢の集合を表す場合などに役立ちます。特徴最大64個の値を格納可能値は 文字列 または 数値格納順序は 保持されない重複した値は 許可されないNULL 値を格納可能



MariaDB の Data Types における SET CHARACTER SET の徹底解説

文字コード: 文字をコンピュータ上で表現するための規則。UTF-8、latin1 など様々な種類が存在します。照合順序: 文字列の比較方法を定義。文字コード内でどの文字がどのように並ぶかを決定します。SET CHARACTER SET は、以下の役割を担います。


MariaDB INTEGER データ型:プログラミング解説

定義: 符号付き整数値を格納するためのデータ型範囲: -2147483648 から 2147483647 まで (32ビット)デフォルト: 多くの場合、INT は INTEGER のエイリアスとして使用用途: 主に、以下の用途で使用 カウント、ID 番号、数量など、整数値を扱うカラム 外部キー


データベースで文字列を扱う!MariaDBの文字列データ型を徹底解説

MariaDB には、文字列データを格納するために使用できるいくつかのデータ型があります。それぞれのデータ型には、長所と短所があり、使用するデータ型は、格納するデータと、そのデータにどのようにアクセスするかによって異なります。MariaDB における主な文字列データ型は以下の通りです:


MariaDB の Information Schema SPIDER_ALLOC_MEM テーブル: 詳細解説

SPIDER_ALLOC_MEM テーブルには、以下の列があります。ALLOCATOR: メモリ割り当てアルゴリズムの名前SIZE: 割り当てられたメモリサイズ (バイト単位)COUNT: 割り当てられたメモリブロック数TOTAL_SIZE: 割り当てられたすべてのメモリブロックの合計サイズ (バイト単位)



MariaDB で空間データを取り扱う: MPolyFromWKB 関数徹底解説

この関数は、空間データの取り込みと分析において重要な役割を果たします。 具体的には、以下の用途に使用できます。GIS データベースへの空間データの取り込み空間データの可視化空間データの分析MPolyFromWKB 関数の構文は以下の通りです。


複数の条件に基づいて最大値を取得する:GREATEST 関数と CASE 式

MariaDB の GREATEST 関数は、複数の値の中で最大の値を取得します。これは、数値、文字列、日付、時間など、さまざまなデータ型で使用できます。構文expr1, expr2, ..., exprN: 比較する値のリスト。最大 64 個の式を指定できます。


MariaDB 10.4におけるグローバル権限とmysql.global_privテーブル

Grants カラムは、ユーザーに付与された権限をカンマ区切りで列挙します。各権限は、以下のような形式で記述されます。権限名権限名(オプション)ONデータベース名. テーブル名代表的な権限SELECT: データの閲覧INSERT: データの挿入


MariaDB の SQL Statements & Structure をマスター!BIT_LENGTH 関数

MariaDB の BIT_LENGTH 関数は、引数として渡された文字列の長さをビット単位で返します。これは、文字列内の各文字が 8 ビットでエンコードされるという点で重要です。構文:引数:str: 長さをビット単位で取得したい文字列。戻り値:


トラブルシューティング:MariaDB で Base64 エンコード/デコードを行う際に発生するエラー

FROM_BASE64 関数は、以下の構文で使用します。base64_string: デコードする Base64 エンコードされた文字列FROM_BASE64 関数は、以下の手順で動作します。引数 base64_string を Base64 エンコードされた文字列として解釈します。