MySQLの全文検索機能には,ユ,ザ,が調整できるパラメ,タがほとんどありません。一部の変更でソースコードを変更する必要があるために,MySQLソース配布を持っている場合は,全文検索の動作をさらに制御できます。セクション2.9 "ソスからMySQLをンストルする"を参照してください。
全文検索の有効性は,慎重に調整されます。ほとんど場合,デフォルトの動作を変更すると,実際には有効性が低くなる可能性があります。使用方法を理解していない場合は,MySQLソ,スは変更しないでください。
このセクションで説明するほとんどの全文変数は,サ,バ,の起動時に設定する必要があります。変更するには,サ,バ,の再起動が必要です。サ,バ,が動作しているときは,変更できません。
一部の変数を変更するには,テ,ブル内の全文
ンデックスを再構築する必要があります。これを行う手順にいては,このセクションの後半で説明します。
ンデックスが付けられる単語の最小長および最大長は,InnoDB
検索@ @ンデックスの場合はinnodb_ft_min_token_size
およびinnodb_ft_max_token_size
、MyISAM
検索@ @ンデックスの場合は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.cc
(InnoDB
の場合)または存储/ myisam / ftdefs.h
(MyISAM
の場合)で,true_word_char ()
およびmisc_word_char ()
マクロを参照してください。それらのマクロのいずれかに“- - -”
を追加し,MySQLを再コンパescルします。文字セットファ@ @ルを変更します。再コンパ@ @ルする必要はありません。
true_word_char ()
マクロでは,英数字とその他の文字を区別するために「字符类型」テ,ブルが使用されます。文字セットXMLファescルのいずれかで< ctype > < >地图
配列の内容を編集すると,“- - -”
が「英字」になるように指定できます。次に,全文
ンデックスに指定された文字セットを使用します。< ctype > < >地图
配列の書式にいては,セクション10.3.1“文字定義配列”を参照してください。インデックス付きのカラムで使用される文字セットに新しい照合順序を追加し,その照合順序が使用されるようにカラムを変更します。照合順序の追加に関する一般的な情報にいては,セクション10.4“文字セットへの照合順序の追加”を参照してください。全文化学键ンデックス作成に固有の例に化学键いては,セクション12.9.7 "全文ンデックス作成用の照合順序の追加"を参照してください。
ンデックス作成に影響を与える全文変数(innodb_ft_min_token_size
、innodb_ft_max_token_size
、innodb_ft_server_stopword_table
、innodb_ft_user_stopword_table
、innodb_ft_enable_stopword
)を変更する場合は,変更したあとに全文
ンデックスを再構築する必要があります。innodb_ft_min_token_size
およびinnodb_ft_max_token_size
変数は動的に設定できないため,変更するにはサーバーを再起動し,インデックスを再構築する必要があります。
InnoDB
テ,ブルの全文
ンデックスを再構築するには,指数下降
および添加索引
オプションを付けてALTER TABLE
を使用して,各。
全文▪▪ンデックス付きのテ▪▪ブル上で优化表
を実行すると,全文インデックスが再構築され,削除済みのドキュメント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個の単語が最適化されることを表します。後続の优化表
演算は,先行する优化表
演算が終了した場所から続行されます。
ンデックス作成に影響を与える全文変数(ft_min_word_len
、ft_max_word_len
,またはft_stopword_file
)を変更する場合や,ストップワードファイル自体を変更する場合は,変更して,サーバーを再起動したあとに,全文
ンデックスを再構築する必要があります。
MyISAM
テ,ブルの全文
ンデックスを再構築するには,快速
修復演算を実行すれば十分です。
mysql>修复表tbl_name快速;
または,先ほど説明したALTER TABLE
を使用します。これは,修復演算よりも高速になる可能性もあります。
任意の全文
。それ以外の場合は,テーブルのクエリーで不正な結果が生成される可能性があり,テーブルを変更すると,サーバーでは,テーブルが破損していて修復が必要であるとみなされます。
myisamchkを使用して,MyISAM
テーブルインデックスを変更する演算(修復や分析など)を実行する場合は,ほかに指定がなければ,単語の最小長,単語の最大長,およびストップワードファイルのデフォルトの全文パラメ,タ値を使用して,全文
ンデックスが再構築されます。これにより,クエリ,に失敗する可能性があります。
この問題は,これらのパラメ,タがサ,バ,でのみ認識されていることが原因で発生します。MyISAM
▪▪▪▪ンデックスファ▪▪▪▪ルには格納されていません。サーバーで使用される単語の最小長や最大長,またはストップワードファイルの値を変更した場合の問題を回避するには,mysqldで使用されるmyisamchkと同じft_min_word_len
、ft_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
ステ,トメントを使用します。これらのステ,トメントは,適切に使用される全文パラメ,タ値が認識されているサ,バ,で実行されます。