10bet网址
MySQL 5.6リファレンスマニュアル
下载本手册

12.9.6 MySQLの全文検索の微調整

MySQLの全文検索機能には,ユ,ザ,が調整できるパラメ,タがほとんどありません。一部の変更でソースコードを変更する必要があるために,MySQLソース配布を持っている場合は,全文検索の動作をさらに制御できます。セクション2.9 "ソスからMySQLをンストルする"を参照してください。

全文検索の有効性は,慎重に調整されます。ほとんど場合,デフォルトの動作を変更すると,実際には有効性が低くなる可能性があります。使用方法を理解していない場合は,MySQLソ,スは変更しないでください

このセクションで説明するほとんどの全文変数は,サ,バ,の起動時に設定する必要があります。変更するには,サ,バ,の再起動が必要です。サ,バ,が動作しているときは,変更できません。

一部の変数を変更するには,テ,ブル内の全文ンデックスを再構築する必要があります。これを行う手順にいては,このセクションの後半で説明します。

単語の最小長と最大長の構成

ンデックスが付けられる単語の最小長および最大長は,InnoDB検索@ @ンデックスの場合はinnodb_ft_min_token_sizeおよびinnodb_ft_max_token_sizeMyISAM検索@ @ンデックスの場合はft_min_word_lenおよびft_max_word_lenで定義されます。これらのオプションのいずれかを変更したら,変更を有効にするために全文ンデックスを再構築してください。たとえば,2文字の単語を検索可能にするには,オプションファ

[mysqld] innodb_ft_min_token_size=2 ft_min_word_len=2

次に,サ,バ,を再起動し,全文ンデックスを再構築します。MyISAMテブルにいては,MyISAMの全文电子邮箱ンデックスを再構築する際に従う手順で,myisamchkに関する備考に注意してください。

自然言語検索のしきい値の構成

MyISAM検索インデックスでは,選択された特定の重み付けスキームによって,自然言語検索で50%のしきい値が決定されます。これを無効にするには,存储/ myisam / ftdefs.hで次の行を検索してください。

#定义GWS_IN_USE GWS_PROB

この行を次のように変更します。

#定义GWS_IN_USE GWS_FREQ

次に,MySQLを再コンパescルします。この場合,电子邮件ンデックスを再構築する必要はありません。

注記

このように変更すると,匹配()関数に適切な関連性値を提供するMySQLの能力が大幅に低下します。このような一般的な単語を検索する必要がある場合は,代わりに,50%のしきい値に従わない布尔模式を使用して検索する方が適切です。

ブ,ル全文検索演算子の変更

MyISAMテ,ブル上でブ,ル全文検索に使用される演算子を変更するには,ft_boolean_syntaxシステム変数を設定します。(InnoDBには同等の設定がありません.)この変数はサ,バ,の実行中に変更できますが,そのためには超级権限を持っている必要があります。この場合は,电子邮件ンデックスを再構築する必要はありません。この変数を設定する方法を制御するルルにいては,セクション5.1.4 "サ,バ,システム変数"を参照してください。

文字セットの変更

次のリストで説明するように,単語文字とみなされる文字セットは複数の方法で変更できます。変更が完了したら,任意の全文@ @ @ @ @ @ @ @ @ @ @ @ @ @。ハ▪▪フン文字(' - ')を単語文字として処理すると仮定します。次の方法のいずれかを使用します。

  • MySQLソスを変更します。存储/ innobase /处理/ ha_innodb.ccInnoDBの場合)または存储/ myisam / ftdefs.hMyISAMの場合)で,true_word_char ()およびmisc_word_char ()マクロを参照してください。それらのマクロのいずれかに“- - -”を追加し,MySQLを再コンパescルします。

  • 文字セットファ@ @ルを変更します。再コンパ@ @ルする必要はありません。true_word_char ()マクロでは,英数字とその他の文字を区別するために字符类型テ,ブルが使用されます。文字セットXMLファescルのいずれかで< ctype > < >地图配列の内容を編集すると,“- - -”英字になるように指定できます。次に,全文ンデックスに指定された文字セットを使用します。< ctype > < >地图配列の書式にいては,セクション10.3.1“文字定義配列”を参照してください。

  • インデックス付きのカラムで使用される文字セットに新しい照合順序を追加し,その照合順序が使用されるようにカラムを変更します。照合順序の追加に関する一般的な情報にいては,セクション10.4“文字セットへの照合順序の追加”を参照してください。全文化学键ンデックス作成に固有の例に化学键いては,セクション12.9.7 "全文ンデックス作成用の照合順序の追加"を参照してください。

InnoDB全文escンデックスの再構築

ンデックス作成に影響を与える全文変数(innodb_ft_min_token_sizeinnodb_ft_max_token_sizeinnodb_ft_server_stopword_tableinnodb_ft_user_stopword_tableinnodb_ft_enable_stopword)を変更する場合は,変更したあとに全文ンデックスを再構築する必要があります。innodb_ft_min_token_sizeおよびinnodb_ft_max_token_size変数は動的に設定できないため,変更するにはサーバーを再起動し,インデックスを再構築する必要があります。

InnoDBテ,ブルの全文ンデックスを再構築するには,指数下降および添加索引オプションを付けてALTER TABLEを使用して,各。

InnoDB全文escンデックスの最適化

全文▪▪ンデックス付きのテ▪▪ブル上で优化表を実行すると,全文インデックスが再構築され,削除済みのドキュメントIDが削除され,同じ単語に対応する複数のエントリが連結されます(可能な場合)。

全文电子邮箱ンデックスを最適化するには,innodb_optimize_fulltext_onlyを有効にして,优化表を実行します。

mysql> set GLOBAL innodb_optimize_fulltext_only=ONmysql>优化表opening_lines+--------------------+----------+----------+----------+ | 表| Op | Msg_type | Msg_text  | +--------------------+----------+----------+----------+ | 测试。opening_lines | | |状态优化好  | +--------------------+----------+----------+----------+ 1行集(0.01秒)

大きなテブルで全文ンデックスの再構築時間が長くなることを回避するには,innodb_ft_num_word_optimizeオプションを使用すれば,最適化を段階的に実行できます。innodb_ft_num_word_optimizeオプションでは,优化表が実行されるたびに最適化される単語の数が定義されます。デフォルト設定は2000です。これは,优化表が実行されるたびに2000個の単語が最適化されることを表します。後続の优化表演算は,先行する优化表演算が終了した場所から続行されます。

MyISAM全文电子邮箱ンデックスの再構築

ンデックス作成に影響を与える全文変数(ft_min_word_lenft_max_word_len,またはft_stopword_file)を変更する場合や,ストップワードファイル自体を変更する場合は,変更して,サーバーを再起動したあとに,全文ンデックスを再構築する必要があります。

MyISAMテ,ブルの全文ンデックスを再構築するには,快速修復演算を実行すれば十分です。

mysql>修复表tbl_name快速;

または,先ほど説明したALTER TABLEを使用します。これは,修復演算よりも高速になる可能性もあります。

任意の全文。それ以外の場合は,テーブルのクエリーで不正な結果が生成される可能性があり,テーブルを変更すると,サーバーでは,テーブルが破損していて修復が必要であるとみなされます。

myisamchkを使用して,MyISAMテーブルインデックスを変更する演算(修復や分析など)を実行する場合は,ほかに指定がなければ,単語の最小長,単語の最大長,およびストップワードファイルのデフォルトの全文パラメ,タ値を使用して,全文ンデックスが再構築されます。これにより,クエリ,に失敗する可能性があります。

この問題は,これらのパラメ,タがサ,バ,でのみ認識されていることが原因で発生します。MyISAM▪▪▪▪ンデックスファ▪▪▪▪ルには格納されていません。サーバーで使用される単語の最小長や最大長,またはストップワードファイルの値を変更した場合の問題を回避するには,mysqldで使用されるmyisamchkと同じft_min_word_lenft_max_word_len,およびft_stopword_file値を指定します。たとえば,単語の最小長を3に設定した場合は,次のようにmyisamchkを使用してテ,ブルを修復できます。

Shell > myisamchk——recover——ft_min_word_len=3tbl_name.MYI

myisamchkおよびサバで全文パラメタに必ず同じ値が使用されるようにするには,オプションファルの(mysqld)(myisamchk)の両方のセクションにそれぞれを配置してください。

[mysqld] ft_min_word_len=3 [myisamchk] ft_min_word_len=3 .

MyISAMテブルンデックスの変更にmyisamchkを使用する方法の代替として,修理表分析表优化表,またはALTER TABLEステ,トメントを使用します。これらのステ,トメントは,適切に使用される全文パラメ,タ値が認識されているサ,バ,で実行されます。