MySQL全文インデックスの原理と欠点

MySQL全文インデックスの原理と欠点

MySQL フルテキスト インデックスは、特定のテーブルの特定の列に表示されるすべての単語のリストを生成する特別なインデックスです。

テーブルテーブル名を変更して、fulltext(column1,column2)を追加します。

例:

MyISAMテーブルにのみ作成可能

全文インデックスは、単語をスペースまたは句読点で区切ってのみ検索できます。中国語の単語は検索できません (中国語の単語分割をサポートし、中国語の単語を検索できる特別なアプリケーションがありますが、理想的ではありません)

3文字未満の単語は全文インデックスに含まれません。このオプションはmy.cnfを変更することで変更できます。

ft_min_word_len=3

MySQL サーバーを再起動し、 repair table tablename quickを使用して、関連するデータ テーブルのフルテキスト インデックスを再生成します。

テーブル名から*を選択 where match(column1,column2) against('word1 word2 word3')>0.001

match ... against は、データ列 column1 および column2 に word1、word2、word3 の 3 つの単語のうち少なくとも 1 つを含むデータ レコードを検索します。キーワード一致後のデータ列は、フルテキスト インデックスを作成するためのデータ列と同じである必要があります。検索用語は大文字と小文字が区別されず、順序も区別されません。通常、3 文字未満の単語は無視されます。 match... against ... 式は、その評価の結果として浮動小数点数を返します。これは、結果のレコードが検索された単語と一致する度合いを反映します。一致するレコードがない場合、または一致する結果レコードが多すぎて無視される場合、式は 0 を返します。式 > 0.001 は、一致戻り値が小さすぎる結果レコードを除外するために使用されます。

*、match(column1,column2) を ('word1 word2 word3') に対して mtch として選択します。
テーブル名から
mtch>0.01を有する
mtch desc で並び替え
制限5

最も一致する 5 件のレコードを検索します。where 句では仮名を使用できないため、having を使用します。

ブール全文検索機能では、次の演算子がサポートされています。

+word: 先頭のプラス記号は、その単語が返される各行の先頭に出現する必要があることを示します。

-word: 先頭のマイナス記号は、その単語が返される行のいずれにも現れてはならないことを示します。

(演算子なし): デフォルトの状態 (+ または - が指定されていない場合) では、単語はオプションですが、単語を含む行のランクが高くなります。これは、IN BOOLEAN MODE の変更なしで MATCH() ... AGAINST() が機能する方法に似ています。

> <これら 2 つの演算子は、行に割り当てられた関連値に対する単語の効果を変更するために使用されます。 > 演算子は効果を増大させ、< 演算子は効果を減少させます。以下の例を参照してください。

( ) 括弧は単語を部分式に区切るために使用されます。括弧はネストできます。

~word: 先頭のチルダは否定文字として機能し、行の関連性に対する word の効果を否定します。 これは「ノイズ」単語をマークするのに役立ちます。このような単語を含む行は、他の行よりも低いランクになります。

word*: wordで始まる単語を検索します。単語の末尾にのみ出現できます。

「word1 word」: 指定された単語はデータ レコード内に出現する必要があり、順序も一致している必要があり、大文字と小文字が区別されます。

select * from tablename where match(column1,column2) against ('+word1 +word2 -word3' in boolean mode')

ブール検索では 1 または 0 のみが返され、一致の度合いを示す浮動小数点数は返されなくなりました。

全文インデックスの欠点:

1. データ テーブルが大きいほど、フルテキスト インデックスの効果は高くなります。データ テーブルが小さいと、理解できない結果が返される可能性があります。

2. 全文検索では、単語全体が一致対象として使用されます。単語が変形されている場合(接尾辞または複数形の場合)、別の単語として扱われます。

3. 文字、数字、一重引用符、アンダースコアで構成される文字列のみが単語とみなされます。音声記号付きの文字は文字のままですが、C++ では単語とはみなされなくなりました。

4. 大文字と小文字を区別しない

5. MyISAMでのみ使用可能

6. 全文インデックスの作成が遅く、全文インデックスによる各種データの変更も遅い

7. 中国語には対応していません

上記は、MySQL フルテキスト インデックスの原理と欠陥の詳細な内容です。MySQL フルテキスト インデックスの詳細については、123WORDPRESS.COM の他の関連記事に注目してください。

以下もご興味があるかもしれません:
  • MySQL インデックス失敗の原理
  • MySQL インデックスの原理と使用例の分析
  • MySQLクエリ最適化プロセスを理解する
  • MySQL ページングクエリ最適化テクニック
  • MySQLグループクエリ最適化方法
  • MySQL のインデックスの原理とクエリの最適化の詳細な説明

<<:  JS の toFixed() メソッドの丸め精度の問題の詳細な説明

>>:  DockerはCMDまたはENTRYPOINTコマンドを使用して複数のサービスを同時に起動します

推薦する

Vueはmockjsを使用してシミュレートされたデータケースの詳細を生成します

目次プロジェクトにmockjsをインストールするVueプロジェクトでmockjsを使用する基本的なプ...

Linux viコマンドの知識ポイントと使い方のまとめ

Linux viコマンドの詳しい説明vi エディタは、すべての Unix および Linux システ...

Linux usermod コマンドの使用

1. コマンドの紹介usermod (ユーザー変更) コマンドは、ユーザー アカウントを変更するため...

JavaScript キャンバスは影付きのグラフィックとテキストを実装します

キャンバスを使用して、参照用の影付きのグラフィックとテキストを作成します。具体的な内容は次のとおりで...

Windows Server 2012 リモート デスクトップ ライセンス サーバーがライセンスを提供できず、リモート セッションが切断される

本日、会社の内部サーバーにログインしたところ、リモートアクセスができませんでした。エラー メッセージ...

Ubuntu環境でのSSHの詳細なインストールと使用

SSH は Secure Shell の略で、安全な伝送プロトコルです。Ubuntu クライアントは...

hasLayout によって発生する CSS バグの一覧

IE には長い間問題がありました。誰もがテストを受けたとき、誰もが笑顔でしたが、それはただのニヤニヤ...

HTML チュートリアル: title 属性と alt 属性

XHTML は CSS レイアウトの基礎です。jb51.net は常に XHTML 知識の習得を重視...

スクロールバーがスペースを占有することで発生するバグを修正しました

背景このバグは滾動條占據空間ことで発生していました。いくつかの情報を確認して、ようやく解決しました。...

MySQL のインデックスの原理とクエリの最適化の詳細な説明

目次1. はじめに1. インデックスとは何ですか? 2. インデックスはなぜ必要なのでしょうか? 2...

CSSの記述形式、モバイルページの基本構造の詳細な説明

1. CSSの記述形式1. インラインスタイルCSSコードを開始タグに直接記述することができます&l...

検証コードケースのjs実装

この記事の例では、検証コードを実装するためのjsの具体的なコードを参考までに共有しています。具体的な...

MySQL slow_log テーブルを InnoDB エンジンに変更することはできません。詳細な説明

背景mysql.slow_log からスロー クエリ ログを取得するのは遅く、テーブルは csv テ...

Linux システムでのスケジュールされたタスクの紹介

目次1. 計画タスクをカスタマイズする2. 時間を同期する3. 練習する4. セキュリティの問題1....

Vue.js での VNode の使用

VNodeとはvue.js には VNode クラスがあり、これを使用してさまざまな種類の vnod...