全文インデックスには特別なクエリ構文が必要です。全文検索はインデックスの有無にかかわらず実行できますが、インデックスが存在すると一致速度が向上します。全文インデックスのインデックスは、ドキュメント内の検索キーワードに対応するコンテンツを見つけやすくするために、特別な構造で保存されます。私たちの日常生活において、最も一般的な全文検索はインターネット検索エンジンです。 Web 検索エンジンのデータは非常に大きく、リレーショナル データベースは通常使用されませんが、原理は似ています。 フルテキスト インデックスでは、文字ベースの検索 (CHAR、VARCHAR、および TEXT タイプの列) がサポートされ、自然言語モード (自然言語モード、デフォルト) とブール モード (ブール モード) もサポートされます。たとえば、「データベース エンジン」を検索すると、「データベース」、「エンジン」、「データベース エンジン」を含むコンテンツが取得されます。全文インデックスの実装には多くの制限があり、非常に複雑です。ただし、MySQL サーバーに組み込まれており、多くのアプリケーションの要件を満たすことができるため、広く使用されています。 MySQL 5.6 より前のバージョンでは、MyISAM ストレージ エンジンのみがフルテキスト インデックスをサポートしていました。フルテキスト インデックスを作成するには、以下のコンテンツ列のように、フルテキスト インデックスとしてマークする列を指定する必要があります。 テーブル t_news を作成します ( id INT UNSIGNED AUTO_INCREMENT NOT NULL 主キー、 コンテンツテキスト、 著者 VARCHAR(32)、 タイトル VARCHAR(128)、 全文(コンテンツ) )ENGINE=InnoDB; MySQL 5.6 より前は、中国語検索のサポートはあまり良くありませんでした。単語の分割を自分で実行し、段落を単語に前処理してからデータベースに保存する必要がありました。 MySQL 5.7.6 以降には、単語セグメンター ngram が組み込まれています。 Ngram は単語セグメントの長さの設定をサポートしており、長さによって中国語を異なる単語に分割できます (あまりスマートではありませんが、ほとんどのシナリオに対応します)。 MySQL グローバル変数 ngram_token_size を使用して単語の分割長を設定できます。デフォルト値は 2 で、1 ~ 10 のオプションがサポートされています。上記の例では、フルテキスト インデックスを構築するにはワード ブレーカーを指定する必要があります。 テーブルt_newsを作成します( id INT UNSIGNED AUTO_INCREMENT NOT NULL 主キー、 コンテンツテキスト、 著者 VARCHAR(32)、 タイトル VARCHAR(128)、 フルテキストキー idx(content) とパーサー ngram )ENGINE=InnoDB; データ テストを挿入します。 `t_news` に挿入 (`id`、`content`、`author`、`title`) VALUES ('1'、'データベースとエンジンがあります'、'島のコーダー'、'データベース エンジン'); 単純なあいまい検索では、LIKE を使用して検索を完了できますが、全文検索の場合は、次のステートメントを使用する必要があります。 t_newsから*を選択 WHERE MATCH (コンテンツ) AGAINST (自然言語モードの「データ エンジン」) この方法では、挿入されたばかりのコンテンツを取得できますが、これは LIKE では不可能です。また、関連性による並べ替えや別のデータの挿入もサポートしています。 `t_news` に挿入 (`id`、`content`、`author`、`title`) 値 (2、「データベースがあります」、「島のコーダー」、「データベース」) 次に、並べ替えクエリを実行します。 SELECT *、MATCH (コンテンツ) AGAINST ('データエンジン') AS 関連性 t_newsより WHERE MATCH (コンテンツ) AGAINST ('データ エンジン') 関連性ASCで並べ替え ここでは、一致する値が列として照会され、エイリアスを使用して並べ替えることができます。相関が高いほど、対応する関連性の値が大きくなるため、並べ替えに使用できます。投資が無関係の場合、関連性の値は 0 になります。 ブールモードでは、+ を使用して一致する結果を保持したり、- を使用して一致する結果を除外したりするなど、より詳細な制御が可能になります。次の例では、データは一致しますが、エンジンを含むデータは除外されます。その他の演算子については、MySQL の公式ドキュメント「フルテキスト インデックス演算子」を参照してください。 t_newsから*を選択 WHERE MATCH (content) AGAINST ('+data*-engine' IN BOOLEAN MODE); 上記はMySQL全文インデックス使用ガイドの詳細な内容です。MySQL全文インデックスの詳細については、123WORDPRESS.COMの他の関連記事に注目してください。 以下もご興味があるかもしれません:
|
この記事では、WeChatアプレットの9マスグリッド効果を実現するための具体的なコードを参考までに紹...
lsof (開いているファイルのリスト) は、プロセスによって開かれたファイルを表示するツールです。...
input と img を同じ行に配置すると、img タグが常に input より 1 つ上になり、...
1. はじめにtr はテキストの一部を変換または削除するために使用されます。 tr は transl...
複数行を超えるテキストをインターセプトするための HTML コードは次のとおりです。 HTML:コー...
目次概要必要とするアプリURL PWA にはどのような技術コンポーネントが必要ですか?マニフェストフ...
MongoDB を起動すると、プロンプトは次のようになります。共有ライブラリのロード中にエラーが発...
しばらくReactを勉強した後、実践してみたいと思います。そこで、個人のブログのウェブサイトを再構築...
1. 関連する技術的なポイントバイト版ヴュー3 ts統合ルーティングvuexを統合するAxiosを統...
この記事では、jQueryのクリック時のラブエフェクトの具体的なコードを参考までに共有します。具体的...
mysql コマンドを使用して、mysql のインストール パスを表示できます。 # 次の 2 つの...
本日、MySQL 8.0 をアップデートしました。最初の問題: Navicatがデータベースに接続で...
純粋な CSS を使用して、マウスが行の上を通過するときに行の背景色を変更し、その行にフォーカスがあ...
テーブルを美しくするために、セルごとに異なる境界線の色を設定できます。基本的な構文<TD 境界...
目次クエリキャッシュの最適化概要クエリプロセスクエリキャッシュ構成クエリキャッシュの無効化メモリ管理...