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.これを理解する3. これは誰ですか? 4.矢印関数はさらに読む要約する1. は...
<br />表の境界線の CSS 構文具体的な内容には、上境界線の幅、右境界線の幅、下境...
アレイの重複排除は、通常、就職面接中に遭遇し、アレイの重複排除方法のコードを手動で記述することが求め...
関連記事:初心者が学ぶ HTML タグ (2)導入された HTML タグは、必ずしも XHTML 仕...
目次1. プロジェクト要件2. 文書の内容3. プロジェクト例4. プロジェクトコード1. プロジェ...
MySQL には、「group_concat」という関数があります。通常の使用では問題がないかもしれ...
まず依存関係をダウンロードします: cnpm i -S vue-uuid ali-oss画像フィール...
HTMLページジャンプ: window.open(url, "", "...
目次1 マウントディレクトリとファイルを作成する2 Redisイメージを取得する3 コンテナを作成し...
目次背景DHCPの設定DHCP ファイル (動的ホスト構成プロトコル) の編集tftp 設定sysl...
この記事では、Vueの計算プロパティ実装レポートカードを参考に共有します。具体的な内容は次のとおりで...
ウェブページに403 Forbiddenと表示されるNginx (yum インストール ログは通常 ...
1.ページを XML タイプとして宣言しないでください。ページでは UTF-8 または UTF-16...
1. 古い仮想DOMと新しい仮想DOMを比較し、まずキーが同じかどうかを確認します。 2. 引き続...
目次新しい HTML ファイルを作成します。初期テンプレートを作成するHTML の追加CSS パディ...