mysql5.7.25の全文検索機能の使い方

王林
リリース: 2023-05-28 17:34:06
転載
1615 人が閲覧しました

はじめに

プロジェクトで全文検索機能を使用する必要がある場合があります。全文検索の数が比較的少なく、次のような別の専用のインデックス作成ツールを構築したくない場合は、 elasticsearch の場合は、mysql.Function に付属する全文検索の使用を検討できます。

Mysql 5.7.25には全文検索機能が付いており、とても便利です。

MySQL 5.7.6 より前では、フルテキスト インデックスは英語のフルテキスト インデックスのみをサポートしており、中国語のフルテキスト インデックスはサポートしていませんでした。単語セグメンタを使用して中国語の段落を前処理し、それらを分割する必要がありました。単語を抽出し、データベースに保存します。

MySQL 5.7.6 以降、MySQL には、中国語、日本語、および韓国語の単語の分割をサポートする組み込みの ngram フルテキスト パーサーが組み込まれています。

この記事で使用されている MySQL バージョンは 5.7.25、InnoDB データベース エンジンです。

1. フルテキスト インデックスを持つテーブルを作成します

CREATE TABLE `tbl_article_content` (
  `id` bigint(40) NOT NULL AUTO_INCREMENT,
  `article_title` varchar(60) COMMENT '标题',
  `article_summary` varchar(120) COMMENT '摘要',
  `article_content` text NOT NULL COMMENT '内容',
  `article_id` bigint(40) NOT NULL COMMENT '对应文章ID',
  `create_date` datetime NOT NULL COMMENT '创建时间',
  `modified_date` datetime NOT NULL COMMENT '更新时间',
  PRIMARY KEY (`id`) USING BTREE,
  KEY `artid` (`article_id`) USING BTREE,
  FULLTEXT KEY `article_content` (`article_content`) /*!50100 WITH PARSER `ngram` */ 
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;
ログイン後にコピー

/*!50100 */ バージョン 5.01.00 以降を意味し、実行のみを実行します。

WITH PARSER `ngram` は指定された単語分割エンジンです。

2. フルテキスト インデックスの追加

テーブルの作成時にフルテキスト インデックスが追加されていない場合は、テーブルの作成後に追加できます。

create fulltext index article_content on tbl_article_content(article_content) WITH PARSER ngram;
ログイン後にコピー

3.テストデータを追加

INSERT INTO `tbl_article_content` VALUES ('2', '文章标题', '文章摘要', '文章内容', '2', '2022-02-05 13:47:55', '2022-02-05 13:47:59');
ログイン後にコピー

4.クエリを実行

mysql> select * FROM tbl_article_content222 WHERE MATCH(article_content) AGAINST('内容');
+----+---------------+-----------------+-----------------+------------+---------------------+---------------------+
| id | article_title | article_summary | article_content | article_id | create_date         | modified_date       |
+----+---------------+-----------------+-----------------+------------+---------------------+---------------------+
|  2 | 文章标题      | 文章摘要        | 文章内容        |          2 | 2022-02-05 13:47:55 | 2022-02-05 13:47:59 |
+----+---------------+-----------------+-----------------+------------+---------------------+---------------------+
1 row in set
ログイン後にコピー

全文クエリのキーワードはMATCHとAGAINSTです。

5. 文法

MATCH (col1,col2,...) AGAINST (expr [search_modifier])
search_modifier: { IN BOOLEAN MODE | WITH QUERY EXPANSION }
ログイン後にコピー

例: SELECT * FROM tab_name WHERE MATCH ('列名 1, 列名 2...列名 n') AGAINST ('Word 1 Word 2 Word 3 ... word m');

つまり、MATCH は一致する列に相当し、AGAINST は検索されるコンテンツに相当します。

以上がmysql5.7.25の全文検索機能の使い方の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:yisu.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!