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 ファイルがない場合の完璧なソリューション
この記事の例では、モバイル紅包雨機能ページを実現するためのHTMLの具体的なコードを共有しています。...
擬似要素と擬似クラスところで、まずは疑似クラスセレクターと疑似要素セレクターについておさらいしておき...
データベース内のトランザクションとロックを表示するための一般的なステートメントトランザクションの待機...
現在、Docker には中国向けの公式ミラーがあります。詳細については、https://www.do...
SHTMLとASPは似ています。SHTMLという名前のファイルでは、SSIの命令がASPの命令と同じ...
序文Linux カーネルプログラミングでは、マクロ関数 container_of(ptr, type...
1. インデックスの役割一般的に言えば、インデックスは本の目次に相当します。条件に基づいてクエリを実...
カスタムパラメータを渡すだけhtml <div id="アプリ"> ...
目次1. 環境2. 準備3. MySQL 8.0.11をインストールするMySQL 8 の公式バージ...
Jenkins+Tomcatサーバーの設定中に、Tomcat設定ファイルが変更され、サーバーのTom...
今日、SQLトレーニングの質問バンクでこの質問を見ました。これは、非常に代表的なマルチテーブル変更の...
目次1: https証明書を準備する2: nginx sslモジュールを準備する3: SSL証明書を...
関連文書この記事の一部は、https://www.cnblogs.com/zhongchao666/...
1. 問題の説明 root@mysqldb 22:12: [xucl]> テーブル t1\G ...
序文この記事では、山括弧のその他の用途をさらに詳しく見ていきます。前回の記事では、山括弧 (<...