Rumah >pangkalan data >tutorial mysql >Bagaimana untuk menggunakan fungsi carian teks penuh mysql5.7.25

Bagaimana untuk menggunakan fungsi carian teks penuh mysql5.7.25

王林
王林ke hadapan
2023-05-28 17:34:061639semak imbas

Kata Pengantar

Kadangkala fungsi carian teks penuh perlu digunakan dalam projek Jika bilangan carian teks penuh agak kecil, dan anda tidak mahu membina alat pengindeksan khusus yang berasingan seperti elasticsearch, anda boleh mempertimbangkan untuk menggunakan carian teks penuh yang disertakan dengan Fungsi mysql.

Mysql 5.7.25 dilengkapi dengan fungsi carian teks penuh, yang sangat mudah.

Sebelum MySQL 5.7.6, indeks teks penuh hanya menyokong indeks teks penuh bahasa Inggeris dan tidak menyokong indeks teks penuh bahasa Cina Anda perlu menggunakan pembahagian perkataan untuk mempraproses perenggan bahasa Cina dan membahagikannya perkataan, dan kemudian simpannya dalam pangkalan data.

Bermula daripada MySQL 5.7.6, MySQL mempunyai penghurai teks penuh ngram terbina dalam untuk menyokong pembahagian perkataan Cina, Jepun dan Korea.

Versi MySQL yang digunakan dalam artikel ini ialah 5.7.25, enjin pangkalan data InnoDB.

1. Cipta jadual dengan indeks teks penuh

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 */ Ini bermakna versi 5.01.00 atau lebih tinggi, hanya laksanakan.

DENGAN PARSER ` ngram` ialah enjin pembahagian perkataan yang ditentukan.

2. Tambahkan indeks teks penuh

Jika indeks teks penuh tidak ditambahkan semasa membuat jadual, anda boleh menambahnya selepas mencipta jadual.

create fulltext index article_content on tbl_article_content(article_content) WITH PARSER ngram;

3. Tambah data ujian

INSERT INTO `tbl_article_content` VALUES ('2', '文章标题', '文章摘要', '文章内容', '2', '2022-02-05 13:47:55', '2022-02-05 13:47:59');

4. Laksanakan pertanyaan

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

Kata kunci pertanyaan teks penuh ialah PADAN dan LAWAN.

5. Tatabahasa

MATCH (col1,col2,...) AGAINST (expr [search_modifier])
search_modifier: { IN BOOLEAN MODE | WITH QUERY EXPANSION }

Contohnya: PILIH * DARI nama_tab WHERE MATCH ('Nama lajur 1, nama lajur 2...Nama lajur n') TERHADAP ('Perkataan 1 Perkataan 2 Perkataan 3 ... perkataan m');

Iaitu: PADAN adalah bersamaan dengan lajur yang hendak dipadankan, dan MELAWAN ialah kandungan yang ditemui.

Atas ialah kandungan terperinci Bagaimana untuk menggunakan fungsi carian teks penuh mysql5.7.25. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam