ホームページ >データベース >mysql チュートリアル >MySQL の全文検索テクニック

MySQL の全文検索テクニック

WBOY
WBOYオリジナル
2023-06-15 17:33:352606ブラウズ

MySQL は現在最も一般的に使用されているリレーショナル データベースの 1 つであり、全文検索も非常に重要な機能です。この記事では、MySQL の全文検索テクニックを紹介し、MySQL を全文検索に効果的に使用するのに役立ちます。

1. 全文検索サポートの設定

MySQL で全文検索機能を使用するには、まずサーバーでこの機能が有効になっていることを確認する必要があります。 MySQL 5.6.4 以降では、次のコマンドを使用して全文検索が有効になっているかどうかを確認できます。

SHOW VARIABLES LIKE 'innodb_ft%';

innodb_ft_server が ON に設定されている場合、全文検索は有効になっています。

全文検索サポートが有効になっていない場合は、my.cnf (または my.ini) ファイルを変更し、ft_min_word_len パラメーターの値を、検索される単語の最小長に設定する必要があります。デフォルトでは、その値は 4 です。たとえば、長さが 3 の単語を検索したい場合は、その値を 3 に変更し、MySQL サービスを再起動する必要があります。

2. フルテキスト インデックスの作成

フルテキスト検索のサポートが有効になっている場合、検索する必要があるテーブルのフルテキスト インデックスを作成できます。フルテキスト インデックスの作成は、フルテキスト検索が必要な列に FULLTEXT インデックスを作成するのと同じくらい簡単です。たとえば、記事の本文内で全文検索を実行する場合は、次のコマンドを使用して、「articles」テーブルの「content」列に FULLTEXT インデックスを作成できます:

ALTER TABLE articles ADD FULLTEXT(content);

これにより、「コンテンツ」列インデックスの FULLTEXT が作成され、全文検索クエリが高速化されます。 FULLTEXT インデックスは、CHAR、VARCHAR、または TEXT データ型の列にのみ作成できることに注意してください。全文インデックスが作成されると、全文検索を開始できます。

3. 全文検索クエリを使用する

MySQL を使用した全文検索の構文は、通常の SQL クエリ ステートメントと非常に似ています。たとえば、「MySQL」という単語を含むすべての記事を検索するステートメントは次のとおりです。

SELECT * FROM articles WHERE MATCH(content) AGAINST('MySQL');

このうち、MATCH 句で検索対象の列を指定し、AGAINST 句で検索対象のキーワードを指定します。複数の列で全文検索を実行する場合は、列をリストするだけです。たとえば、テキストとタイトルの両方に「MySQL」を含む記事を検索するには、次のコマンドを使用できます。

SELECT * FROM articles WHERE MATCH(title,content) AGAINST('MySQL');

全文検索クエリを実行するときは、通常、次の問題:

  1. 単語を順番に一致させる: デフォルトでは、MySQL は検索されたキーワードを 1 つの単語として扱い、最もよく一致するもので並べ替えます。複数の単語を順番に一致させたい場合は、二重引用符を使用して単語を囲むことができます。たとえば、テキストに「MySQL」と「database」を含むすべての記事をクエリするには、次のコマンドを使用できます。
SELECT * FROM articles WHERE MATCH(content) AGAINST('"MySQL database"' IN BOOLEAN MODE);
  1. ブール パターン マッチングを使用する: MySQL はブール パターン クエリを提供します。より柔軟にデータを検索できます。たとえば、テキストに「MySQL」を含むが「database」を含まないすべての記事を検索するには、次のコマンドを使用できます。
SELECT * FROM articles WHERE MATCH(content) AGAINST('+MySQL -database' IN BOOLEAN MODE);

ブール モードでは、プラス記号「 」は、 「マイナス記号」は単語が含まれないことを意味し、「アスタリスク」は任意の単語と一致することを意味し、「二重引用符」は完全な語句と一致することを意味します。

  1. 類似性の尺度を調整する: デフォルトでは、MySQL は単語の頻度に基づく類似性の尺度を使用して、テキスト間の類似性を判断します。ただし、場合によっては、類似性の尺度を調整する必要がある場合があります。たとえば、音楽の歌詞を検索する場合、単語の頻度ではなく一致に注意を払います。類似性の尺度を調整するには、AGAINST 関数のパラメーターで IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION パラメーターを指定できます。例:
SELECT * FROM lyrics WHERE MATCH(text) AGAINST ('+love +song' IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION);

この例では、MySQL は自然言語パターンとクエリ拡張を使用してテキスト間の類似性を判断し、より適切な一致結果が得られます。

4. 結論

全文検索は現代のデータベースの標準機能となっており、ソーシャル ネットワーク、音楽およびビデオ関連アプリケーションなどを含むさまざまな分野で広く使用されています。ここでは、MySQL の全文検索テクニックを紹介しますが、これらのテクニックは、MySQL をより効率的に全文検索に使用するのに役立つと思います。もちろん、他にも学び、習得する必要のあるスキルやテクニックはたくさんありますが、この記事があなたにとって新しいアイデアを導き、より多くのインスピレーションを与えることを願っています。

以上がMySQL の全文検索テクニックの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。