全文インデックスには特別なクエリ構文が必要です。全文検索はインデックスの有無にかかわらず実行できますが、インデックスが存在すると一致速度が向上します。全文インデックスのインデックスは、ドキュメント内の検索キーワードに対応するコンテンツを見つけやすくするために、特別な構造で保存されます。私たちの日常生活において、最も一般的な全文検索はインターネット検索エンジンです。 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の他の関連記事に注目してください。 以下もご興味があるかもしれません:
|
歴史的な理由により、MySQL レプリケーションは、REDO ログではなく論理バイナリ ログに基づい...
この記事の例では、参考のために航空機戦争ゲームを実装するためのJSの具体的なコードを共有しています。...
1. 事業背景マスク レイヤーを使用してユーザーの異常な操作を遮断する方法は、フロントエンドでよく使...
Yum経由でJenkinsをインストールする1. インストール # yum ソースをインポート wg...
0x00 はじめに数か月前、Firefox に脆弱性 (CVE-2019-17016) があること...
この記事では、例を使用して、MySQL マスター/スレーブ レプリケーションと読み取り/書き込み分離...
0x0 テスト環境本社本番サーバーと支社バックアップサーバーはリモートデータバックアップが必要です...
HTML で余分なテキストを省略記号として表示したい場合は、いくつかの方法があります。 1行テキスト...
ご存知のとおり、cd コマンドがないと、Linux でディレクトリを切り替えることはできません。それ...
1. SSHリモート管理SSH の定義SSH (Secure Shell) は、主にキャラクタ イン...
この記事では、VMware 12でのUbuntu 16.04のインストールチュートリアルを参考までに...
1. 環境バージョンDocker バージョン 19.03.12セントロス7ソル8.6.2 2. Do...
目次ビジネスロジックデータテーブル構造クエリロジックSQL スクリプトスクリプトの説明ビジネスロジッ...
序文この記事では、Linux 構成ログ サーバーに関する関連コンテンツを主に紹介し、参考と学習のため...
1. ページ要件1) 標準のヘッダーとフッターを使用するXML/HTML コードコンテンツをクリップ...