MySQL 4.x 以降では、全文検索 MATCH ... AGAINST モード (大文字と小文字を区別しない) がサポートされています。 全文インデックスを作成するテーブルのストレージエンジンタイプはMyISAMである必要があります。 問題は、match against が中国語のあいまい検索をあまりサポートしていないことです。 新しい utf8 MyISAM テーブルを作成し、フルテキスト インデックスを作成します。 CREATE TABLE記事( id INT UNSIGNED AUTO_INCREMENT NOT NULL 主キー、 タイトル VARCHAR(200)、 本文テキスト、 FULLTEXT (タイトル、本文) ) ENGINE=MyISAM デフォルト > FULLTEXT(title, body) は、title 列と body 列の全文インデックスを作成します。後で検索するときは、必ず両方の列を指定してください。 このテーブルにテストデータを追加します 記事 (タイトル、本文) に値を挿入 (「MySQL チュートリアル」、「DBMS は DataBase の略です...」)、 (「MySQL をうまく使う方法」、「... を経験した後」)、 (「MySQL の最適化」、「このチュートリアルでは次の内容を紹介します...」)、 (「1001 MySQL トリック」、「1. mysqld を root として実行しないでください。2. ...」)、 ('MySQL vs. YourSQL','次のデータベース比較では...'), ('MySQL セキュリティ','適切に構成されている場合、MySQL ...'); 全文検索テスト SELECT * FROM articles WHERE MATCH (title,body) AGAINST ('database'); MATCH (title, body) の値は、フルテキスト インデックスが作成された 2 つのフィールドである必要があることに注意してください。 MySQL が全文検索でサポートするデフォルトの文字長は 4 です。SHOW VARIABLES LIKE 'ft_min_word_len' を使用すると、指定された文字長を表示できます。また、MySQL 構成ファイル my.ini に ft_min_word_len = 2 などの行を追加して、my.ini の最小文字長を変更することもできます。変更後、MySQL を再起動します。 さらに、MySQL は次のように単語の重みを計算して、結果セットに表示されるかどうかを決定します。 MySQL は、まずセットとクエリ内の適切な各単語の重みを計算します。複数のドキュメントに出現する単語は、この特定のセットでは意味的価値が低いため、重みが低くなります (重みがゼロになる場合もあります)。それ以外の場合、単語が少ないと重みが高くなります。MySQL のデフォルトのしきい値は 50% です。上記では、「you」はすべてのドキュメントに出現するため、100% です。結果セットには 50% 未満の単語のみが表示されます。 全文検索構文 SELECT * FROM articles WHERE MATCH (title,body) AGAINST ('+apple -banana' IN BOOLEAN MODE); AND を示します。つまり、含める必要があることを意味します。 - は NOT を意味し、含まれていないことを意味します。 SELECT * FROM articles WHERE MATCH (title,body) AGAINST ('apple banana' IN BOOLEAN MODE); apple と banana の間にはスペースがあり、これは OR、つまり少なくとも apple と banana のどちらか 1 つが含まれていることを意味します。 SELECT * FROM articles WHERE MATCH (title,body) AGAINST ('+apple banana' IN BOOLEAN MODE); リンゴは必ず含める必要がありますが、バナナも含めると、リンゴの重みが高くなります。 SELECT * FROM articles WHERE MATCH (title,body) AGAINST ('+apple ~banana' IN BOOLEAN MODE); ~ はおなじみの排他的論理和演算子です。返されるレコードにはリンゴが含まれている必要がありますが、バナナも含まれている場合は重みが減ります。 しかし、これは +apple -banana ほど厳密ではありません。後者は banana が含まれている場合は何も返さないからです。 SELECT * FROM articles WHERE MATCH (title,body) AGAINST ('+apple +(>banana <orange)' IN BOOLEAN MODE); リンゴとバナナの両方、またはリンゴとオレンジの両方を含むレコードを返します。しかし、リンゴとバナナの両方を含むレコードの重みは、リンゴとオレンジの両方を含むレコードの重みよりも高くなります。 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: React Nativeプロジェクトフレームワークの構築経験
>>: Linux で rc.local ファイルがない場合の完璧なソリューション
目次1. 補足知識ポイント: 関数の暗黙的な変換2. 補足知識: call/apply を使って配列...
vue3.0 への最初の試みを記録します。プロジェクトを開始したときに、「モジュール 'wo...
CSS 画面サイズの適応を実現するには、まず CSS3 @media メディア クエリを導入する必要...
この記事では、ネイティブ JS で実装されたデジタル時計エフェクトを紹介します。エフェクトは次のとお...
目次2. 試した方法2.1 キープアライブ2.2 ネストされたルートを持つ CSS 3. 機能説明4...
序文この記事では主に、MySQL のインデックスとビューの使用方法と違いを紹介し、参考と学習のために...
CSS の font-family プロパティを使用して中国語フォントを参照する場合、フォントを定義...
今日、slave_exec_modeというパラメータを偶然見ました。マニュアルの説明から、このパラメ...
目次序文1. サービスプログラムをインストールする2. メイン設定ファイルを書く3. サブ構成ファイ...
目次1. クロージャとは何ですか? 2. クロージャの役割2.1) メモリ2.2) プライベート変数...
序文ブラウザをどのようにズームしても、ボックス コンテナーの高さを常に 100% に保つ必要がある場...
多くの場合、画像を表示する<a>タグのスタイルに遭遇しますが、タグ内にテキストがあり、そ...
必要:バックエンドは配列オブジェクトを返し、それがフロントエンドで配列に結合されます。配列は名前に従...
モチベーション学習の必要性から、海外のサーバーメーカー(どこのメーカーかは言いません)のVPSサービ...
目次1. Dockerファイル2. pom 構成3. イメージプッシュ4. k8s デプロイメント前...