匹配(
col1
,col2
,……)反对(expr
[search_modifier
])
search_modifier:{在自然语言模式下的|在自然语言模式下的|在布尔模式下的|在查询展开}
MySQLでは,次のような全文インデックス設定および検索がサポートされています。
MySQLの全文インデックスは,型
全文
のインデックスです。全文インデックスは,
InnoDB
またはMyISAM
テーブルでのみ使用でき,字符
、VARCHAR
,または文本
カラムにのみ作成できます。全文
インデックスの定義は,テーブルの作成時に创建表
ステートメントで指定することも,あとでALTER TABLE
または创建索引
を使用して追加することもできます。データセットが大きい場合は,
全文
インデックスが付いていないテーブルにロードしてから,そのあとでインデックスを作成した方が,既存の全文
インデックスが付いているテーブルにロードするよりも断然速いです。
全文検索は,匹配()……对
構文を使用して実行されます。匹配()
には,検索対象のカラム名をカンマで区切ったリストを指定します。对
には,検索する文字列と,実行する検索のタイプを示すオプションの修飾子を指定します。検索文字列は,クエリー評価時に定数である文字列値にする必要があります。たとえば,テーブルカラムは,行ごとに異なる可能性があるため除外されます。
全文検索には,次の3つの種類があります。
自然言語の検索では,検索文字列が人間の自然な言語でのフレーズ(フリーテキストのフレーズ)として解釈されます。特別な演算子はありません。ストップワードリストが適用されます。これらは,
InnoDB
検索インデックスの場合はinnodb_ft_enable_stopword
、innodb_ft_server_stopword_table
,およびinnodb_ft_user_stopword_table
、MyISAM
検索インデックスの場合はft_stopword_file
によって制御されます。詳細は,セクション12.9.4”全文ストップワード”を参照してください。在自然语言模式下
修飾子が指定されている場合または修飾子がまったく指定されていない場合は,全文検索が自然言語検索になります。詳細は,セクション12.9.1”自然言語全文検索”を参照してください。ブール検索では,特別なクエリー言語のルールを使用して検索文字列が解釈されます。文字列には,検索対象の単語が含まれます。また,一致する行に単語が存在しなければならない,または存在してはならないように,あるいは通常よりも単語の重みが高くまたは低くなるように,要件を指定する演算子を含めることもできます。特定の共通単語(ストップワード)は,検索インデックスから省略され,検索文字列に存在しない場合は一致が行われません。
在布尔模式
修飾子は,ブール検索を指定します。詳細は,セクション12.9.2”ブール全文検索”を参照してください。クエリー拡張検索は,自然言語検索を改善したものです。自然言語検索を実行する際は,検索文字列が使用されます。その後,検索で返されたもっとも関連性の高い行からの単語が検索文字列に追加され,再度検索が実行されます。クエリーでは2回目の検索からの行が返されます。
在自然语言模式下进行查询扩展
または与查询扩展
修飾子は,クエリー拡張検索を指定します。詳細は,セクション12.9.3”クエリー拡張を使用した全文検索”を参照してください。
全文
クエリーのパフォーマンスについては,セクション8.3.4”カラムインデックス”を参照してください。
InnoDB
全文
インデックスの処理に関するより技術的な詳細は,セクション14.2.13.3”全文インデックス”を参照してください。
全文検索上の制約については,セクション12.9.5”全文制限”に一覧表示されています。
myisam_ftdumpユーティリティーは,MyISAM
全文インデックスの内容をダンプします。これは,全文クエリーのデバッグ時に役立つことがあります。セクション4.6.2”myisam_ftdump——全文インデックス情報の表示”を参照してください。