全文検索について
すべてのエンジンが全文検索をサポートしているわけではない 第 21 章で述べたように、MySQL はいくつかの基本的なデータベース エンジンをサポートしています。この本で説明されているように、すべてのエンジンが全文検索をサポートしているわけではありません。最も一般的に使用される 2 つのエンジンは MyISAM と InnoDB です。前者は全文検索をサポートしますが、後者はサポートしません。このため、この本で作成されたサンプル テーブルのほとんどは InnoDB を使用していますが、1 つのサンプル テーブル (productnotes テーブル) では MyISAM が使用されています。アプリケーションで全文検索機能が必要な場合は、この点に留意する必要があります。
LIKE キーワード。ワイルドカード演算子を使用してテキスト (およびテキストの一部) と一致します。 LIKE を使用すると、列内のどこにあるかに関係なく、特別な値または部分的な値を含む行を検索できます。
正規表現を使用して列値を照合するためのさらなる入門として、テキストベースの検索を使用します。正規表現を使用すると、必要な行を検索する非常に複雑な一致パターンを作成できます。
これらの検索メカニズムは非常に便利ですが、いくつかの重要な制限があります。
1. パフォーマンス - ワイルドカードと正規表現のマッチングでは、通常、MySQL がテーブル内のすべての行とのマッチングを試みる必要があります (これらの検索ではテーブル インデックスが使用されることはほとんどありません)。したがって、検索する行数が増えると、これらの検索に非常に時間がかかる可能性があります。
2. 明示的な制御 – ワイルドカードと正規表現の一致では、一致するものと一致しないものを明示的に制御することは困難です (常に可能であるとは限りません)。たとえば、単語は一致する必要がある、単語は一致しない、および最初の単語が一致する場合にのみ単語が一致または不一致になることを指定します。
3. インテリジェントな結果 - ワイルドカードおよび正規表現ベースの検索は非常に柔軟な検索を提供しますが、どちらも結果を選択するインテリジェントな方法を提供しません。たとえば、特定の単語を検索すると、単一の一致を含む行と複数の一致を含む行を区別せずに、その単語を含むすべての行が返されます (より一致する可能性が高い順に並べ替えます)。同様に、特定の単語を検索すると、その単語は含まれないが他の関連単語が含まれる行は見つかりません。
これらすべての制限やその他の制限は、全文検索を使用して解決できます。全文検索を使用する場合、MySQL は各行を個別に調べる必要がなく、各単語を個別に分析して処理する必要もありません。 MySQL は指定されたカラム内の各単語のインデックスを作成し、これらの単語に対して検索を実行できます。このようにして、MySQL は、どの単語が一致するか (どの行にその単語が含まれるか)、どの単語が一致しないのか、一致する頻度などを迅速かつ効率的に判断できます。
以上がMySQL の全文検索の概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。