Topik ini menjelaskan cara menggunakan fungsi indeks teks penuh MATCH() AGAINST(), MATCH() FUZZY(), dan MATCH() PHRASE() untuk melakukan pencarian teks penuh serta menyorot kata kunci pencarian.
Prasyarat
Indeks teks penuh telah dibuat. Untuk informasi selengkapnya, lihat Buat indeks teks penuh.
Data sampel
Dalam contoh ini, sebuah tabel bernama tbl_fulltext_demo dibuat sebagai sumber data sampel. Setiap indeks teks penuh menggunakan alat analisis yang berbeda. Pernyataan SQL berikut digunakan untuk membuat tabel tbl_fulltext_demo dan memasukkan data ke dalamnya:
/* RC_DDL_ENGINE_REWRITE_XUANWUV2=false */
CREATE TABLE `tbl_fulltext_demo` (
`id` INT,
`content` VARCHAR,
`content_alinlp` VARCHAR,
`content_ik` VARCHAR,
`content_standard` VARCHAR,
`content_ngram` VARCHAR,
FULLTEXT INDEX fidx_c(`content`), -- Gunakan alat analisis default
FULLTEXT INDEX fidx_alinlp(`content_alinlp`) WITH ANALYZER alinlp,-- Gunakan alat analisis AliNLP
FULLTEXT INDEX fidx_ik(`content_ik`) WITH ANALYZER ik,-- Gunakan alat analisis IK
FULLTEXT INDEX fidx_standard(`content_standard`) WITH ANALYZER standard,-- Gunakan alat analisis Standard
FULLTEXT INDEX fidx_ngram(`content_ngram`) WITH ANALYZER ngram,-- Gunakan alat analisis Ngram
PRIMARY KEY (`id`)
) DISTRIBUTED BY HASH(id);
INSERT INTO tbl_fulltext_demo(id, content, content_alinlp, content_ik, content_standard, content_ngram)
VALUES(1, 'Customers Need Better Products and Services', 'Customers Need Better Products and Services', 'Customers Need Better Products and Services', 'Customers Need Better Products and Services', 'Customers Need Better Products and Services')
,(2, 'Wuhan Changjiang Bridge','Wuhan Changjiang Bridge','Wuhan Changjiang Bridge','Wuhan Changjiang Bridge', 'Wuhan Changjiang Bridge')
,(3, 'Hangzhou, Zhejiang Province','Hangzhou, Zhejiang Province', 'Hangzhou, Zhejiang Province', 'Hangzhou, Zhejiang Province', 'Hangzhou, Zhejiang Province')
,(4, 'User Values and Commercial Values of Products','User Values and Commercial Values of Products', 'User Values and Commercial Values of Products', 'User Values and Commercial Values of Products', 'User Values and Commercial Values of Products');
Catatan penggunaan
Fungsi indeks teks penuh mendukung karakter khusus tertentu, tetapi karakter escape
\\harus digunakan sebelum karakter tersebut. Karakter khusus yang didukung meliputi:+-&|!(){}[]^"~*?:\/.Sebagai contoh, untuk mencari konten yang berisi
Spring/Scenery, sintaks yang salah adalah:MATCH(content) AGAINST('Spring / Scenery'). Sintaks yang benar adalah:MATCH(content) AGAINST('Spring \\/ Scenery').Fungsi indeks teks penuh tidak mendukung operator seperti
=,!=,BETWEEN,IS NULL,IS NOT NULL, danLIKE.
Match() against()
Fungsi MATCH() AGAINST() mendukung pencocokan kata dan pencocokan eksak. Fungsi ini dapat digunakan untuk mencari konten yang cocok dengan kata kunci dari satu atau beberapa kolom.
Sintaks
SELECT * FROM `table_name` WHERE match (column_name[ , ... ]) against('term')Parameter
table_name: nama tabel yang ingin Anda cari.
column_name: nama kolom yang ingin Anda cari. Pisahkan beberapa kolom dengan koma (,).
term: kata kunci pencarian. Pencarian mendukung operator logika berikut:
AND: mencari konten yang cocok dengan semua kata kunci.
OR: mencari konten yang cocok dengan salah satu kata kunci.
NOT: mencari konten yang cocok dengan kata kunci di sebelah kiri tetapi tidak cocok dengan kata kunci di sebelah kanan operator logika.
CatatanOperator logika tidak peka huruf besar/kecil.
Contoh 1: Lakukan kueri kolom tunggal
SELECT id, content
FROM `tbl_fulltext_demo`
WHERE MATCH(`content`) AGAINST('Products Services');Hasil contoh:
+------+--------------------------------------+
| id | content |
+------+--------------------------------------+
| 4 |User Values and Commercial Values of Products |
+------+--------------------------------------+
| 1 | Customers Need Better Products and Services |
+------+--------------------------------------+Contoh 2: Lakukan kueri multi-kolom
Untuk mencari konten dari beberapa kolom, Anda tidak perlu membuat indeks multi-kolom. Jika masing-masing kolom memiliki indeks teks penuh, Anda dapat langsung melakukan pencarian teks penuh pada kolom-kolom tersebut.
SELECT id, content, content_alinlp
FROM `tbl_fulltext_demo`
WHERE MATCH(content, content_alinlp) AGAINST('Services');atau
SELECT id, content, content_alinlp
FROM `tbl_fulltext_demo`
WHERE MATCH(content) AGAINST('Services')
OR MATCH(content_alinlp) AGAINST('Services');Kedua pernyataan SQL di atas memberikan hasil yang sama.
Hasil contoh:
+------+-----------------------------+------------------------------+
| id | content | content_alinlp |
+------+-----------------------------+------------------------------+
| 1 | Customers Need Better Products and Services | Customers Need Better Products and Services |
+------+-----------------------------+------------------------------+Contoh 3: Lakukan kueri Boolean
Gunakan operator logika AND untuk mencari konten yang cocok dengan semua kata kunci.
SELECT * FROM `tbl_fulltext_demo` WHERE MATCH(content) AGAINST('Products AND Services');Hasil contoh:
+------+--------------------------------+--------------------------------+-----------------------------+--------------------------------------+--------------------------------------+ | id | content | content_alinlp | content_ik | content_standard | content_ngram | +------+--------------------------------+--------------------------------+-----------------------------+--------------------------------------+--------------------------------------+ | 1 | Customers Need Better Products and Services | Customers Need Better Products and Services | Customers Need Better Products and Services | Customers Need Better Products and Services | Customers Need Better Products and Services | +------+--------------------------------+--------------------------------+-----------------------------+--------------------------------------+--------------------------------------+Gunakan operator logika OR untuk mencari konten yang cocok dengan salah satu kata kunci.
SELECT * FROM `tbl_fulltext_demo` WHERE MATCH(content) AGAINST('Products OR Services');Hasil contoh:
+------+--------------------------------+--------------------------------+-----------------------------+--------------------------------------+--------------------------------------+ | id | content | content_alinlp | content_ik | content_standard | content_ngram | +------+--------------------------------+--------------------------------+-----------------------------+--------------------------------------+--------------------------------------+ | 4 | User Values and Commercial Values of Products | User Values and Commercial Values of Products | User Values and Commercial Values of Products |User Values and Commercial Values of Products | User Values and Commercial Values of Products | +------+--------------------------------+--------------------------------+-----------------------------+--------------------------------------+--------------------------------------+ | 1 | Customers Need Better Products and Services | Customers Need Better Products and Services | Customers Need Better Products and Services | Customers Need Better Products and Services | Customers Need Better Products and Services | +------+--------------------------------+--------------------------------+-----------------------------+--------------------------------------+--------------------------------------+Gunakan operator logika NOT untuk mencari konten yang cocok dengan kata kunci di sebelah kiri tetapi tidak cocok dengan kata kunci di sebelah kanan operator logika.
SELECT * FROM `tbl_fulltext_demo` WHERE MATCH(content) AGAINST('Products NOT Services');Hasil contoh:
+------+--------------------------------+--------------------------------+-----------------------------+--------------------------------------+--------------------------------------+ | id | content | content_alinlp | content_ik | content_standard | content_ngram | +------+--------------------------------+--------------------------------+-----------------------------+--------------------------------------+--------------------------------------+ | 4 | User Values and Commercial Values of Products | User Values and Commercial Values of Products | User Values and Commercial Values of Products | User Values and Commercial Values of Products | User Values and Commercial Values of Products | +------+--------------------------------+--------------------------------+-----------------------------+--------------------------------------+--------------------------------------+Gunakan operator logika NOT untuk mencari konten yang tidak cocok dengan kata kunci di sebelah kanan operator logika.
SELECT * FROM `tbl_fulltext_demo` WHERE MATCH(content) AGAINST('*:* NOT Services');Penting*:*menentukan semua konten JSON. Ekspresi ini hanya dapat digunakan di sebelah kiri operator logika dan harus ditempatkan di awal nilai parameter term.Hasil contoh:
+------+--------------------------------+--------------------------------+-----------------------------+--------------------------------------+--------------------------------------+ | id | content | content_alinlp | content_ik | content_standard | content_ngram | +------+--------------------------------+--------------------------------+-----------------------------+--------------------------------------+--------------------------------------+ | 2 | Wuhan Changjiang Bridge | Wuhan Changjiang Bridge | Wuhan Changjiang Bridge | Wuhan Changjiang Bridge | Wuhan Changjiang Bridge | +------+--------------------------------+--------------------------------+-----------------------------+--------------------------------------+--------------------------------------+ | 4 | User Values and Commercial Values of Products | User Values and Commercial Values of Products | User Values and Commercial Values of Products | User Values and Commercial Values of Products | User Values and Commercial Values of Products | +------+--------------------------------+--------------------------------+-----------------------------+--------------------------------------+--------------------------------------+ | 3 | Hangzhou, Zhejiang Province | Hangzhou, Zhejiang Province | Hangzhou, Zhejiang Province | Hangzhou, Zhejiang Province | Hangzhou, Zhejiang Province | +------+--------------------------------+--------------------------------+-----------------------------+--------------------------------------+--------------------------------------+Gunakan tanda kurung () untuk membuat kueri Boolean kompleks.
SELECT id, content_alinlp FROM `tbl_fulltext_demo` WHERE MATCH(content_alinlp) AGAINST('(Wuhan OR Hangzhou) AND (Bridge OR Xihu)');Hasil contoh:
+------+-----------------------+ | id | content_alinlp | +------+-----------------------+ | 2 | Wuhan Changjiang Bridge | +------+-----------------------+
Contoh 4: Lakukan kueri dan filter set hasil
Pencarian teks penuh mengembalikan semua hasil yang mendekati kata kunci. Dalam skenario dengan volume data besar, ukuran set hasil berdasarkan kata kunci bisa sangat luas. Jika Anda hanya menginginkan hasil yang sangat relevan, Anda dapat memanfaatkan fitur pemfilteran set hasil yang disediakan oleh AnalyticDB for MySQL.
Pernyataan contoh berikut menyaring 90% hasil dengan kedekatan rendah dan hanya mengembalikan 10% hasil teratas:
SELECT id, content
FROM `tbl_fulltext_demo`
WHERE MATCH(content) AGAINST('Products Services') > 0.9;Hasil contoh:
+------+--------------------------------------+
| id | content |
+------+--------------------------------------+
| 4 | User Values and Commercial Values of Products |
+------+--------------------------------------+
| 1 | Customers Need Better Products and Services |
+------+--------------------------------------+Contoh 5: Lakukan kueri dan urutkan hasil berdasarkan skor kedekatan
AnalyticDB for MySQL memungkinkan Anda memperoleh skor kedekatan hasil dan mengurutkannya berdasarkan skor tersebut.
Kueri skor kedekatan.
SELECT id, content, MATCH(content) AGAINST('Products Services') AS score FROM `tbl_fulltext_demo` WHERE MATCH(content) AGAINST('Products Services') > 0.9;PentingWHERE MATCH(content) AGAINST('Products Services') > 0.9menyaring 90% hasil dengan kedekatan rendah dan hanya mengembalikan 10% hasil teratas.Secara default, hasil yang dikembalikan tidak diurutkan berdasarkan skor kedekatan:
+------+--------------------------------------+----------------------+ | id | content | score | +------+--------------------------------------+----------------------+ | 4 | User Values and Commercial Values of Products | 0.13076457381248474 | +------+--------------------------------------+----------------------+ | 1 | Customers Need Better Products and Services | 0.2615291476249695 | +------+--------------------------------------+----------------------+Fungsi MATCH(content) AGAINST('Wuhan') dalam proyeksi SELECT belum tentu sama dengan fungsi MATCH(content) AGAINST('Products Services') dalam klausa WHERE. Pernyataan contoh berikut mengkueri skor kedekatan fungsi MATCH(content) AGAINST('Wuhan').
SELECT *, MATCH(content) AGAINST('Wuhan') AS score FROM `tbl_fulltext_demo` WHERE MATCH(content) AGAINST('Products Services') > 0.9 ORDER BY score DESC;Hasil contoh:
+------+--------------------------------+--------------------------------+-----------------------------+-------------------------------------+--------------------------------------+-------------+ | id | content | content_alinlp | content_ik | content_standard | content_ngram |score | +------+--------------------------------+--------------------------------+-----------------------------+-------------------------------------+--------------------------------------+-------------+ | 4 | User Values and Commercial Values of Products | User Values and Commercial Values of Products | User Values and Commercial Values of Products | User Values and Commercial Values of Products | User Values and Commercial Values of Products |0.0 | +------+--------------------------------+--------------------------------+-----------------------------+-------------------------------------+--------------------------------------+-------------+ | 1 | Customers Need Better Products and Services | Customers Need Better Products and Services | Customers Need Better Products and Services |Customers Need Better Products and Services | Customers Need Better Products and Services |0.0 | +------+--------------------------------+--------------------------------+-----------------------------+-------------------------------------+--------------------------------------+-------------+Urutkan hasil berdasarkan skor kedekatan.
Gunakan klausa ORDER BY untuk mengurutkan hasil berdasarkan skor kedekatan secara menurun.
SELECT id, content, MATCH(content) AGAINST('Products Services') AS score FROM `tbl_fulltext_demo` WHERE MATCH(content) AGAINST('Products Services') > 0.9 ORDER BY score DESC;PentingWHERE MATCH(content) AGAINST('Products Services') > 0.9menyaring 90% hasil dengan kedekatan rendah dan hanya mengembalikan 10% hasil teratas.Hasil contoh:
+------+--------------------------------------+---------------------+ | id | content | score | +------+--------------------------------------+---------------------+ | 1 | Customers Need Better Products and Services | 0.2615291476249695 | +------+--------------------------------------+---------------------+ | 4 | User Values and Commercial Values of Products | 0.13076457381248474 | +------+--------------------------------------+---------------------+
Contoh 6: Lakukan pencocokan kata
Secara default, pencarian teks penuh membagi kata kunci menjadi kata-kata individual sebelum mencari. Jika kata kunci tidak diapit tanda kutip ganda (""), hasil kueri yang cocok dengan salah satu kata dalam kata kunci tersebut akan dikembalikan.
Alat analisis AliNLP membagi kata kunci "Products and Services" menjadi "Products", "and", dan "Services", serta kata kunci "Products Services" menjadi "Products" dan "Services".
SELECT id, content_alinlp, MATCH(content_alinlp) AGAINST('Products Services') AS score
FROM `tbl_fulltext_demo`
WHERE MATCH(content_alinlp) AGAINST('Products Services') > 0.9
ORDER BY score DESC;WHERE MATCH(content) AGAINST('Products Services') > 0.9 menyaring 90% hasil dengan kedekatan rendah dan hanya mengembalikan 10% hasil teratas.
Hasil kueri yang cocok dengan salah satu kata dalam kata kunci "Products Services" dikembalikan:
+------+--------------------------------------+---------------------+
| id | content_alinlp | score |
+------+--------------------------------------+---------------------+
| 1 | Customers Need Better Products and Services | 0.2615291476249695 |
+------+--------------------------------------+---------------------+
| 4 | User Values and Commercial Values of Products | 0.13076457381248474 |
+------+--------------------------------------+---------------------+Contoh 7: Lakukan pencocokan eksak
Jika kata kunci diapit tanda kutip ganda (""), alat analisis tidak akan membaginya. Hasil kueri yang secara eksak cocok dengan frasa tersebut akan dikembalikan.
Cari konten yang secara eksak cocok dengan kata kunci Products Services.
SELECT id, content_alinlp, MATCH (content_alinlp) AGAINST ('"product service"') AS score FROM `tbl_fulltext_demo` WHERE MATCH (content_alinlp) AGAINST ('"product service"') > 0.9 ORDER BY score DESC;Set hasil kosong dikembalikan.
Empty setCari konten yang secara eksak cocok dengan kata kunci Products and Services.
SELECT id, content_alinlp, MATCH(content_alinlp) AGAINST('"Products and Services"') AS score FROM `tbl_fulltext_demo` WHERE MATCH(content_alinlp) AGAINST('"Products and Services"') > 0.9 ORDER BY score DESC;PentingWHERE MATCH(content) AGAINST('Products Services') > 0.9menyaring 90% hasil dengan kedekatan rendah dan hanya mengembalikan 10% hasil teratas.Hasil contoh:
+------+--------------------------------------+--------------------+ | id | content_alinlp | score | +------+--------------------------------------+--------------------+ | 1 | Customers Need Better Products and Services | 0.3922937512397766 | +------+--------------------------------------+--------------------+
Match() fuzzy()
Fungsi MATCH() FUZZY() mendukung pencocokan fuzzy berdasarkan jarak edit Levenshtein. Dalam kasus ejaan kata kunci yang salah, pencocokan fuzzy membantu menemukan konten yang mirip dengan kata kunci.
Sintaks
SELECT * FROM `table_name` WHERE match (`column_name`) fuzzy('term') [max_edits(n)];Parameter
table_name: nama tabel yang ingin Anda cari.
column_name: nama kolom yang ingin Anda cari.
term: kata kunci pencarian.
max_edits(n): jarak edit maksimum (opsional). Parameter ini menentukan jumlah minimum operasi penyisipan, penghapusan, atau penggantian yang diperlukan untuk mengubah string A menjadi string B. Nilai default: 2. Rentang valid: bilangan bulat 0 hingga 2. Sebagai contoh, string
windosdiubah menjadiwindowsdengan satu operasi penyisipan karakter 'w'. Dalam kasus ini, jarak edit antarawindosdanwindowsadalah 1.
Contoh 1: Lakukan pencarian perkiraan
SELECT id, content
FROM tbl_fulltext_demo
WHERE MATCH(content_standard) FUZZY('hangzou');Hasil contoh:
+------+-----------------------------+
| id | content |
+------+-----------------------------+
| 3 | Hangzhou, Zhejiang Province |
+------+-----------------------------+Contoh 2: Lakukan pencarian perkiraan dengan jarak edit 1
SELECT id, content
FROM tbl_fulltext_demo
WHERE MATCH(content_standard) FUZZY('hangzou') max_edits(1);Hasil contoh:
+------+-----------------------------+
| id | content |
+------+-----------------------------+
| 3 | Hangzhou, Zhejiang Province |
+------+-----------------------------+Contoh 3: Lakukan pencarian perkiraan dengan jarak edit 2
SELECT id, content
FROM tbl_fulltext_demo
WHERE MATCH(content_standard) FUZZY('Wuhan Chang') max_edits(2);Hasil contoh:
+------+-----------------------+
| id | content |
+------+-----------------------+
| 2 | Wuhan Changjiang Bridge |
+------+-----------------------+Match() phrase()
Fungsi MATCH() PHRASE() mendukung pencarian frasa. Fungsi ini digunakan untuk mencari konten yang cocok dengan beberapa kata kunci dalam kolom tertentu. Jika beberapa kata kunci cocok, Anda dapat menggunakan parameter slop untuk menyesuaikan urutan kata kunci.
Sintaks
SELECT * FROM `table_name` WHERE match (`column_name`) phrase('term1 term2') [slop(n)]Parameter
table_name: nama tabel yang ingin Anda cari.
column_name: nama kolom yang ingin Anda cari.
term1 term2: daftar kata kunci pencarian. Pisahkan beberapa kata kunci dengan spasi. Urutan kata kunci memengaruhi hasil pencocokan.
slop(n): nilai slop maksimum (opsional). Setelah teks dibagi menjadi daftar kata oleh alat analisis, posisi kata ditandai mulai dari 0 secara berurutan. Kata-kata dapat dipindahkan untuk mencocokkan daftar kata kunci yang ditentukan oleh parameter PHRASE. Nilai default: 0. Rentang valid: bilangan bulat 0 hingga 6. Sebagai contoh, jika alat analisis Standard membagi teks "Merchandise and Services", hasilnya adalah "Merchandise", "and", "Services".
Teks
Merchandise
Brand
And
Service
Service
Posisi
0
1
2
3
4
PHRASE('Merchandise and'): Jarak slop adalah 1, artinya "Merchandise" dipindahkan satu langkah ke kanan atau "and" dipindahkan satu langkah ke kiri.
PHRASE('Merchandise Services'): Jarak slop adalah 2, artinya "Merchandise" dipindahkan dua langkah ke kanan atau "Services" dipindahkan dua langkah ke kiri.
Contoh: Cari frasa
Secara default, AnalyticDB for MySQL menggunakan alat analisis standard untuk membagi teks "Hangzhou, Zhejiang Province" menjadi "Hangzhou", "Zhejiang", dan "Province".
Cari konten yang cocok dengan daftar kata kunci zhejiang hangzhou.
SELECT id, content FROM tbl_fulltext_demo WHERE MATCH(content_standard) PHRASE('zhejiang hangzhou');Nilai default parameter slop adalah 0. Tidak ada konten yang cocok dengan daftar kata kunci zhejiang hangzhou. Set hasil kosong dikembalikan.
Empty setCari konten yang cocok dengan daftar kata kunci hangzhou Province dengan slop 1.
SELECT id, content FROM tbl_fulltext_demo WHERE MATCH(content_standard) PHRASE('hangzhou Province') slop(1);Hasil contoh:
+------+-----------------------------+ | id | content | +------+-----------------------------+ | 3 | Hangzhou, Zhejiang Province | +------+-----------------------------+Cari konten yang cocok dengan kata kunci zhejiang hangzhou dengan slop 2.
SELECT id, content FROM tbl_fulltext_demo WHERE MATCH(content_standard) PHRASE('zhejiang hangzhou') slop(2);Hasil contoh:
+------+-----------------------------+ | id | content | +------+-----------------------------+ | 3 | Hangzhou, Zhejiang Province | +------+-----------------------------+
Contoh 2: Pencarian frasa bahasa Tionghoa
Dalam pencocokan frasa bahasa Tionghoa menggunakan MATCH() PHRASE(), penggunaan alat analisis bawaan AliNLP dan Ngram dapat menyebabkan kegagalan kueri. Oleh karena itu, kami merekomendasikan penggunaan Alat Analisis Standard dan Alat Analisis IK.
Cari konten yang cocok dengan daftar kata kunci Products Services dengan slop 1.
SELECT id, content FROM tbl_fulltext_demo WHERE MATCH(content_ik) PHRASE('Products Services') slop(1);Hasil contoh:
+------+--------------------------------------+ | id | content | +------+--------------------------------------+ | 1 | Customers Need Better Products and Services | +------+--------------------------------------+Cari konten yang cocok dengan daftar kata kunci Products Services dengan slop 2.
SELECT id, content FROM tbl_fulltext_demo WHERE MATCH(content_standard) PHRASE('Products Services') slop(2);Hasil contoh:
+------+--------------------------------------+ | id | content | +------+--------------------------------------+ | 1 | Customers Need Better Products and Services | +------+--------------------------------------+
Dukungan penyorotan
Gunakan fungsi untuk menyorot kata kunci
AnalyticDB for MySQL memungkinkan Anda menggunakan fungsi fulltext_highlight(`column_name`) untuk menyorot kata kunci dalam kolom indeks teks penuh.
Contoh 1: Gunakan fungsi MATCH() AGAINST() untuk menentukan kata kunci yang ingin Anda sorot
Sorot kata kunci saat melakukan kueri kolom tunggal.
SELECT MATCH(content_alinlp) AGAINST('Wuhan Changjiang') AS score, fulltext_highlight(content_alinlp) FROM tbl_fulltext_demo WHERE MATCH(content_alinlp) AGAINST('Wuhan Changjiang') > 0.9 ORDER BY score DESC LIMIT 3;PentingWHERE MATCH(content_alinlp) AGAINST('Wuhan Changjiang') > 0.9menyaring 90% hasil dengan kedekatan rendah dan hanya mengembalikan 10% hasil teratas.Hasil contoh:
+--------------------+-----------------------------------------+ | score | fulltext_highlight(content_alinlp) | +--------------------+-----------------------------------------+ | 0.4413304328918457 | Bridge | +--------------------+-----------------------------------------+Sorot kata kunci saat melakukan kueri multi-kolom.
SELECT MATCH (content_alinlp) AGAINST ('Wuhan Changjiang') AS score, fulltext_highlight(content_alinlp) FROM tbl_fulltext_demo WHERE MATCH (content_alinlp) AGAINST ('Wuhan Changjiang') > 0.9 AND MATCH(content_alinlp) AGAINST('Bridge') > 0.9 ORDER BY score DESC LIMIT 3;PentingWHERE MATCH (content_alinlp) AGAINST ('Wuhan Changjiang') > 0.9menyaring 90% hasil dengan kedekatan rendah dan hanya mengembalikan hasil 10% teratas berdasarkan kedekatan.Hasil contoh:
+--------------------+--------------------------------------------------+ | score | fulltext_highlight(content_alinlp) | +--------------------+--------------------------------------------------+ | 0.2615291476249695 | | +--------------------+--------------------------------------------------+
Contoh 2: Gunakan fungsi MATCH() FUZZY() untuk menyorot kata kunci
SELECT id, MATCH(content_standard) FUZZY('Wuhan Chang') as score, fulltext_highlight(content_standard)
FROM tbl_fulltext_demo
WHERE MATCH(content_standard) FUZZY('Wuhan Chang');Hasil contoh:
+------+-------+--------------------------------------------------+
| id | score | fulltext_highlight(content_standard) |
+------+-------+--------------------------------------------------+
| 2 | 0.0 | jiang Bridge |
+------+-------+--------------------------------------------------+Contoh 3: Gunakan fungsi MATCH() PHRASE() untuk menentukan kata kunci yang ingin Anda sorot
SELECT id, MATCH(content_ik) PHRASE('Products Services') slop(1) as score, fulltext_highlight(content_ik)
FROM tbl_fulltext_demo
WHERE MATCH(content_ik) PHRASE('Products Services') slop(1);Hasil contoh:
+------+--------------------+--------------------------------------------------------+
| id | score | fulltext_highlight(content_ik) |
+------+--------------------+--------------------------------------------------------+
| 1 | 0.16922473907470703 | Customers Need Better and |
+------+--------------------+--------------------------------------------------------+Gunakan petunjuk untuk menambahkan tag sorotan kustom
AnalyticDB for MySQL secara default menggunakan tag <em> dan </em> untuk penyorotan pencarian teks penuh. Anda juga dapat menggunakan petunjuk untuk mengatur nilai fulltext_highlight_pre_tag dan fulltext_highlight_post_tag guna menentukan tag sorotan kustom.
Contoh 1: Gunakan petunjuk untuk menambahkan tag sorotan kustom berdasarkan fungsi MATCH() AGAINST()
/*+ fulltext_highlight_pre_tag=*/
SELECT MATCH(content_alinlp) AGAINST('Wuhan Changjiang') AS score, fulltext_highlight(content_alinlp)
FROM tbl_fulltext_demo
WHERE MATCH(content_alinlp) AGAINST('Wuhan Changjiang') > 0.9
ORDER BY score DESC LIMIT 3;WHERE MATCH (content_alinlp) AGAINST ('Wuhan Changjiang') > 0.9 menyaring 90% hasil dengan kedekatan rendah dan hanya mengembalikan hasil 10% teratas berdasarkan kedekatan.
Hasil contoh:
+--------------------+-------------------------------------------------+
| score | fulltext_highlight(content_alinlp) |
+--------------------+-------------------------------------------------+
| 0.2615291476249695 | city Bridge |
+--------------------+-------------------------------------------------+Contoh 2: Gunakan petunjuk untuk menambahkan tag sorotan kustom berdasarkan fungsi MATCH() FUZZY()
/*+ fulltext_highlight_pre_tag=*/
SELECT MATCH (content_alinlp) FUZZY ('Wuhan Changjiang') AS score, fulltext_highlight(content_alinlp)
FROM tbl_fulltext_demo
WHERE MATCH (content_alinlp) FUZZY ('Wuhan Changjiang') > 0.9
ORDER BY score DESC LIMIT 3;WHERE MATCH (content_alinlp) FUZZY ('Wuhan Changjiang') > 0.9 menyaring 90% hasil dengan kedekatan rendah dan hanya mengembalikan 10% hasil teratas berdasarkan kedekatan.
Hasil contoh:
+--------------------+-------------------------------------------------+
| score | fulltext_highlight(content_alinlp) |
+--------------------+-------------------------------------------------+
| 0.0 | Bridge |
+--------------------+-------------------------------------------------+Contoh 3: Gunakan petunjuk untuk menambahkan tag sorotan kustom berdasarkan fungsi MATCH() PHRASE()
/*+ fulltext_highlight_pre_tag=*/
SELECT MATCH (content_alinlp) PHRASE ('Wuhan') AS score, fulltext_highlight(content_alinlp)
FROM tbl_fulltext_demo
WHERE MATCH (content_alinlp) PHRASE ('Wuhan') > 0.9
ORDER BY score DESC LIMIT 3;WHERE MATCH (content_alinlp) PHRASE ('Wuhan') > 0.9 menyaring 90% hasil dengan kedekatan rendah dan hanya mengembalikan hasil 10% teratas berdasarkan kedekatan.
Hasil contoh:
+--------------------+---------------------------------------------------------------+
| score | fulltext_highlight(content_alinlp) |
+--------------------+---------------------------------------------------------------+
| 0.13076457381248474 | Customers Need Better |
+--------------------+---------------------------------------------------------------+